📄 expo/versions/v54.0.0/sdk/maps

File: maps.md | Updated: 11/15/2025

Source: https://docs.expo.dev/versions/v54.0.0/sdk/maps

Hide navigation

Search

Ctrl K

Home Guides EAS Reference Learn

Reference version

SDK 54

Archive Expo Snack Discord and Forums Newsletter

Expo Maps iconExpo Maps

GitHub Changelog npm

A library that provides access to Google Maps on Android and Apple Maps on iOS.

GitHub Changelog npm

Android

iOS

Bundled version:

~0.12.8

Copy page


This library is currently in alpha and will frequently experience breaking changes. It is not available in the Expo Go app – use development builds to try it out.

Installation


Terminal

Copy

- npx expo install expo-maps

If you are installing this in an existing React Native app , make sure to install expo in your project.

Watch: Expo Maps Deep Dive

Watch: Expo Maps Deep Dive

Configuration


Expo Maps provides access to the platform native map APIs on Android and iOS.

  • Apple Maps (available on

    iOS

    only). No additional configuration is required to use it after installing this package.

  • Google Maps (available on

    Android

    only). While Google provides a Google Maps SDK for iOS, Expo Maps supports it exclusively on Android. If you want to use Google Maps on iOS, you can look into using an alternative library or writing your own .

Google Cloud API setup

Before you can use Google Maps on Android, you need to register a Google Cloud API project, enable the Maps SDK for Android, and add the associated configuration to your Expo project.

Set up Google Maps on Android

If you have already registered a project for another Google service on Android, such as Google Sign In, you enable the Maps SDK for Android on your project and jump to step 4.

1

Register a Google Cloud API project and enable the Maps SDK for Android

  • Open your browser to the Google API Manager and create a project.
  • Once it's created, go to the project and enable the Maps SDK for Android.

2

Copy your app's SHA-1 certificate fingerprint

For Google Play Store

For development builds

  • If you are deploying your app to the Google Play Store, you'll need to upload your app binary to Google Play console at least once. This is required for Google to generate your app signing credentials.

  • Go to the Google Play Console

    (your app) > Test and release > App integrity > Play app signing > Settings > App signing key certificate.

  • Copy the value of SHA-1 certificate fingerprint.

  • If you have already created a development build , your project will be signed using a debug keystore.

  • After the build is complete, go to your project's dashboard , then, under Project settings > click Credentials.

  • Under Application Identifiers, click your project's package name and under Android Keystore copy the value of SHA-1 Certificate Fingerprint.

3

Create an API key

  • Go to Google Cloud Credential manager and click Create Credentials, then API Key.
  • In the modal, click Edit API key.
  • Under Key restrictions > Application restrictions, choose Android apps.
  • Under Restrict usage to your Android apps, click Add an item.
  • Add your android.package from app.json (for example: com.company.myapp) to the package name field.
  • Then, add the SHA-1 certificate fingerprint's value from step 2.
  • Click Done and then click Save.

4

Add the API key to your project

  • Copy your API Key into your app.json under the android.config.googleMaps.apiKey field.
  • Create a new development build, and you can now use the Google Maps API on Android with expo-maps.

Permissions


To display the user's location on the map, you need to declare and request location permission beforehand. You can configure this using its built-in config plugin if you use config plugins in your project (Continuous Native Generation (CNG) ). The plugin allows you to configure various properties that cannot be set at runtime and require building a new app binary to take effect. If your app does not use CNG, then you'll need to manually configure the library.

Example app.json with config plugin

app.json

Copy

{ "expo": { "plugins": [ [ "expo-maps", { "requestLocationPermission": true, "locationPermission": "Allow $(PRODUCT_NAME) to use your location" } ] ] } }

Configurable properties

| Name | Default | Description | | --- | --- | --- | | requestLocationPermission | false | A boolean to add permissions to AndroidManifest.xml and Info.plist. | | locationPermission | "Allow $(PRODUCT_NAME) to use your location" | Only for: <br><br>iOS<br><br> <br><br>A string to set the NSLocationWhenInUseUsageDescription<br> permission message. |

Usage


import { AppleMaps, GoogleMaps } from 'expo-maps'; import { Platform, Text } from 'react-native'; export default function App() { if (Platform.OS === 'ios') { return <AppleMaps.View style={{ flex: 1 }} />; } else if (Platform.OS === 'android') { return <GoogleMaps.View style={{ flex: 1 }} />; } else { return <Text>Maps are only available on Android and iOS</Text>; } }

API


import { AppleMaps, GoogleMaps } from 'expo-maps'; // ApplesMaps.View and GoogleMaps.View are the React components

Components


AppleMapsView

Only for: 

iOS

Type: React.[Element](https://www.typescriptlang.org/docs/handbook/jsx.html#function-component) <[Omit](https://www.typescriptlang.org/docs/handbook/utility-types.html#omittype-keys) <[AppleMapsViewProps](https://docs.expo.dev/versions/v54.0.0/sdk/maps#applemapsviewprops) , 'ref'>>

AppleMapsViewProps

annotations

Only for: 

iOS

Optional • Type: [AppleMapsAnnotation[]](https://docs.expo.dev/versions/v54.0.0/sdk/maps#applemapsannotation)

The array of annotations to display on the map.

cameraPosition

Only for: 

iOS

Optional • Type: [CameraPosition](https://docs.expo.dev/versions/v54.0.0/sdk/maps#cameraposition-2)

The initial camera position of the map.

circles

Only for: 

iOS

Optional • Type: [AppleMapsCircle[]](https://docs.expo.dev/versions/v54.0.0/sdk/maps#applemapscircle)

The array of circles to display on the map.

markers

Only for: 

iOS

Optional • Type: [AppleMapsMarker[]](https://docs.expo.dev/versions/v54.0.0/sdk/maps#applemapsmarker)

The array of markers to display on the map.

onCameraMove

Only for: 

iOS

Optional • Type: (event: { bearing: number, coordinates: [Coordinates](https://docs.expo.dev/versions/v54.0.0/sdk/maps#coordinates) , tilt: number, zoom: number }) => void

Lambda invoked when the map was moved by the user.

onCircleClick

Only for: 

iOS 18.0+

Optional • Type: (event: [AppleMapsCircle](https://docs.expo.dev/versions/v54.0.0/sdk/maps#applemapscircle) ) => void

Lambda invoked when the circle is clicked

onMapClick

Only for: 

iOS

Optional • Type: (event: { coordinates: [Coordinates](https://docs.expo.dev/versions/v54.0.0/sdk/maps#coordinates) }) => void

Lambda invoked when the user clicks on the map. It won't be invoked if the user clicks on POI or a marker.

onMarkerClick

Only for: 

iOS 18.0+

Optional • Type: (event: [AppleMapsMarker](https://docs.expo.dev/versions/v54.0.0/sdk/maps#applemapsmarker) ) => void

Lambda invoked when the marker is clicked

onPolygonClick

Only for: 

iOS 18.0+

Optional • Type: (event: [AppleMapsPolygon](https://docs.expo.dev/versions/v54.0.0/sdk/maps#applemapspolygon) ) => void

Lambda invoked when the polygon is clicked

onPolylineClick

Only for: 

iOS 18.0+

Optional • Type: (event: [AppleMapsPolyline](https://docs.expo.dev/versions/v54.0.0/sdk/maps#applemapspolyline) ) => void

Lambda invoked when the polyline is clicked

polygons

Only for: 

iOS

Optional • Type: [AppleMapsPolygon[]](https://docs.expo.dev/versions/v54.0.0/sdk/maps#applemapspolygon)

The array of polygons to display on the map.

polylines

Only for: 

iOS

Optional • Type: [AppleMapsPolyline[]](https://docs.expo.dev/versions/v54.0.0/sdk/maps#applemapspolyline)

The array of polylines to display on the map.

properties

Only for: 

iOS

Optional • Type: [AppleMapsProperties](https://docs.expo.dev/versions/v54.0.0/sdk/maps#applemapsproperties)

The properties for the map.

ref

Only for: 

iOS

Optional • Type: [Ref](https://docs.expo.dev/versions/v54.0.0/sdk/maps#ref) <[AppleMapsViewType](https://docs.expo.dev/versions/v54.0.0/sdk/maps#applemapsviewtype) >

style

Only for: 

iOS

Optional • Type: StyleProp<[ViewStyle](https://reactnative.dev/docs/view-style-props) >

uiSettings

Only for: 

iOS

Optional • Type: [AppleMapsUISettings](https://docs.expo.dev/versions/v54.0.0/sdk/maps#applemapsuisettings)

The MapUiSettings to be used for UI-specific settings on the map.

GoogleMapsView

Only for: 

Android

Type: React.[Element](https://www.typescriptlang.org/docs/handbook/jsx.html#function-component) <[Omit](https://www.typescriptlang.org/docs/handbook/utility-types.html#omittype-keys) <[GoogleMapsViewProps](https://docs.expo.dev/versions/v54.0.0/sdk/maps#googlemapsviewprops) , 'ref'>>

GoogleMapsViewProps

cameraPosition

Only for: 

Android

Optional • Type: [CameraPosition](https://docs.expo.dev/versions/v54.0.0/sdk/maps#cameraposition-2)

The initial camera position of the map.

circles

Only for: 

Android

Optional • Type: [GoogleMapsCircle[]](https://docs.expo.dev/versions/v54.0.0/sdk/maps#googlemapscircle)

The array of circles to display on the map.

colorScheme

Only for: 

Android

Optional • Type: [GoogleMapsColorScheme](https://docs.expo.dev/versions/v54.0.0/sdk/maps#googlemapscolorscheme)

Defines the color scheme for the map.

contentPadding

Only for: 

Android

Optional • Type: [GoogleMapsContentPadding](https://docs.expo.dev/versions/v54.0.0/sdk/maps#googlemapscontentpadding)

The padding values used to signal that portions of the map around the edges may be obscured. The map will move the Google logo, etc. to avoid overlapping the padding.

mapOptions

Only for: 

Android

Optional • Type: [GoogleMapsMapOptions](https://docs.expo.dev/versions/v54.0.0/sdk/maps#googlemapsmapoptions)

Defines configuration GoogleMapOptions for a GoogleMap

markers

Only for: 

Android

Optional • Type: [GoogleMapsMarker[]](https://docs.expo.dev/versions/v54.0.0/sdk/maps#googlemapsmarker)

The array of markers to display on the map.

onCameraMove

Only for: 

Android

Optional • Type: (event: { bearing: number, coordinates: [Coordinates](https://docs.expo.dev/versions/v54.0.0/sdk/maps#coordinates) , tilt: number, zoom: number }) => void

Lambda invoked when the map was moved by the user.

onCircleClick

Only for: 

Android

Optional • Type: (event: [GoogleMapsCircle](https://docs.expo.dev/versions/v54.0.0/sdk/maps#googlemapscircle) ) => void

Lambda invoked when the circle is clicked.

onMapClick

Only for: 

Android

Optional • Type: (event: { coordinates: [Coordinates](https://docs.expo.dev/versions/v54.0.0/sdk/maps#coordinates) }) => void

Lambda invoked when the user clicks on the map. It won't be invoked if the user clicks on POI or a marker.

onMapLoaded

Only for: 

Android

Optional • Type: () => void

Lambda invoked when the map is loaded.

onMapLongClick

Only for: 

Android

Optional • Type: (event: { coordinates: [Coordinates](https://docs.expo.dev/versions/v54.0.0/sdk/maps#coordinates) }) => void

Lambda invoked when the user long presses on the map.

onMarkerClick

Only for: 

Android

Optional • Type: (event: [GoogleMapsMarker](https://docs.expo.dev/versions/v54.0.0/sdk/maps#googlemapsmarker) ) => void

Lambda invoked when the marker is clicked

onPOIClick

Only for: 

Android

Optional • Type: (event: { coordinates: [Coordinates](https://docs.expo.dev/versions/v54.0.0/sdk/maps#coordinates) , name: string }) => void

Lambda invoked when a POI is clicked.

onPolygonClick

Only for: 

Android

Optional • Type: (event: [GoogleMapsPolygon](https://docs.expo.dev/versions/v54.0.0/sdk/maps#googlemapspolygon) ) => void

Lambda invoked when the polygon is clicked.

onPolylineClick

Only for: 

Android

Optional • Type: (event: [GoogleMapsPolyline](https://docs.expo.dev/versions/v54.0.0/sdk/maps#googlemapspolyline) ) => void

Lambda invoked when the polyline is clicked.

polygons

Only for: 

Android

Optional • Type: [GoogleMapsPolygon[]](https://docs.expo.dev/versions/v54.0.0/sdk/maps#googlemapspolygon)

The array of polygons to display on the map.

polylines

Only for: 

Android

Optional • Type: [GoogleMapsPolyline[]](https://docs.expo.dev/versions/v54.0.0/sdk/maps#googlemapspolyline)

The array of polylines to display on the map.

properties

Only for: 

Android

Optional • Type: [GoogleMapsProperties](https://docs.expo.dev/versions/v54.0.0/sdk/maps#googlemapsproperties)

The properties for the map.

ref

Only for: 

Android

Optional • Type: [Ref](https://docs.expo.dev/versions/v54.0.0/sdk/maps#ref) <[GoogleMapsViewType](https://docs.expo.dev/versions/v54.0.0/sdk/maps#googlemapsviewtype) >

style

Only for: 

Android

Optional • Type: StyleProp<[ViewStyle](https://reactnative.dev/docs/view-style-props) >

uiSettings

Only for: 

Android

Optional • Type: [GoogleMapsUISettings](https://docs.expo.dev/versions/v54.0.0/sdk/maps#googlemapsuisettings)

The MapUiSettings to be used for UI-specific settings on the map.

userLocation

Only for: 

Android

Optional • Type: [GoogleMapsUserLocation](https://docs.expo.dev/versions/v54.0.0/sdk/maps#googlemapsuserlocation)

User location, overrides default behavior.

GoogleStreetView

Only for: 

Android

Type: React.Element<[GoogleStreetViewProps](https://docs.expo.dev/versions/v54.0.0/sdk/maps#googlestreetviewprops) >

GoogleStreetViewProps

isPanningGesturesEnabled

Only for: 

Android

Optional • Type: boolean

isStreetNamesEnabled

Only for: 

Android

Optional • Type: boolean

isUserNavigationEnabled

Only for: 

Android

Optional • Type: boolean

isZoomGesturesEnabled

Only for: 

Android

Optional • Type: boolean

position

Only for: 

Android

Type: [StreetViewCameraPosition](https://docs.expo.dev/versions/v54.0.0/sdk/maps#streetviewcameraposition)

style

Only for: 

Android

Optional • Type: StyleProp<[ViewStyle](https://reactnative.dev/docs/view-style-props) >

Hooks


useLocationPermissions(options)

| Parameter | Type | | --- | --- | | options(optional) | PermissionHookOptions<object> |

Check or request permissions to access the location. This uses both requestPermissionsAsync and getPermissionsAsync to interact with the permissions.

Returns:

[null | PermissionResponse, RequestPermissionMethod<PermissionResponse>, GetPermissionMethod<PermissionResponse>]

Example

const [status, requestPermission] = useLocationPermissions();

Methods


Maps.getPermissionsAsync()

Checks user's permissions for accessing location.

Returns:

[Promise](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise) <PermissionResponse>

A promise that fulfills with an object of type PermissionResponse .

Maps.requestPermissionsAsync()

Asks the user to grant permissions for location.

Returns:

[Promise](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise) <PermissionResponse>

A promise that fulfills with an object of type PermissionResponse .

Types


AppleMapsAnnotation

Only for: 

iOS

Type: [AppleMapsMarker](https://docs.expo.dev/versions/v54.0.0/sdk/maps#applemapsmarker) extended by:

| Property | Type | Description | | --- | --- | --- | | backgroundColor(optional) | string | The background color of the annotation. | | icon(optional) | [SharedRefType](https://docs.expo.dev/versions/v54.0.0/sdk/maps#sharedreftype) <'image'> | The custom icon to display in the annotation. | | text(optional) | string | The text to display in the annotation. | | textColor(optional) | string | The text color of the annotation. |

AppleMapsCircle

Only for: 

iOS

| Property | Type | Description | | --- | --- | --- | | center | [Coordinates](https://docs.expo.dev/versions/v54.0.0/sdk/maps#coordinates) | The coordinates of the circle. | | color(optional) | [ProcessedColorValue](https://docs.expo.dev/versions/v54.0.0/sdk/maps#processedcolorvalue) \| string | The color of the circle. | | id(optional) | string | The unique identifier for the circle. This can be used to identify the clicked circle in the onCircleClick event. | | lineColor(optional) | [ProcessedColorValue](https://docs.expo.dev/versions/v54.0.0/sdk/maps#processedcolorvalue) \| string | The color of the circle line. | | lineWidth(optional) | number | The width of the circle line. | | radius | number | The radius of the circle (in meters). | | width(optional) | number | The width of the circle. |

AppleMapsMarker

Only for: 

iOS

| Property | Type | Description | | --- | --- | --- | | coordinates(optional) | [Coordinates](https://docs.expo.dev/versions/v54.0.0/sdk/maps#coordinates) | The coordinates of the marker. | | id(optional) | string | The unique identifier for the marker. This can be used to identify the clicked marker in the onMarkerClick event. | | systemImage(optional) | string | The SF Symbol to display for the marker. | | tintColor(optional) | string | The tint color of the marker. | | title(optional) | string | The title of the marker, displayed in the callout when the marker is clicked. |

AppleMapsPointOfInterestCategories

Only for: 

iOS

| Property | Type | Description | | --- | --- | --- | | excluding(optional) | [AppleMapPointOfInterestCategory[]](https://docs.expo.dev/versions/v54.0.0/sdk/maps#applemappointofinterestcategory) | The POI categories to exclude. To show all POIs, set this to an empty array. | | including(optional) | [AppleMapPointOfInterestCategory[]](https://docs.expo.dev/versions/v54.0.0/sdk/maps#applemappointofinterestcategory) | The POI categories to include. To hide all POIs, set this to an empty array. |

AppleMapsPolygon

Only for: 

iOS

| Property | Type | Description | | --- | --- | --- | | color(optional) | [ProcessedColorValue](https://docs.expo.dev/versions/v54.0.0/sdk/maps#processedcolorvalue) \| string | The color of the polygon. | | coordinates | [Coordinates[]](https://docs.expo.dev/versions/v54.0.0/sdk/maps#coordinates) | The coordinates of the circle. | | id(optional) | string | The unique identifier for the polygon. This can be used to identify the clicked polygon in the onPolygonClick event. | | lineColor(optional) | [ProcessedColorValue](https://docs.expo.dev/versions/v54.0.0/sdk/maps#processedcolorvalue) \| string | The color of the polygon. | | lineWidth(optional) | number | The width of the polygon. |

AppleMapsPolyline

Only for: 

iOS

| Property | Type | Description | | --- | --- | --- | | color(optional) | [ProcessedColorValue](https://docs.expo.dev/versions/v54.0.0/sdk/maps#processedcolorvalue) \| string | The color of the polyline. | | contourStyle(optional) | [AppleMapsContourStyle](https://docs.expo.dev/versions/v54.0.0/sdk/maps#applemapscontourstyle) | The style of the polyline. | | coordinates | [Coordinates[]](https://docs.expo.dev/versions/v54.0.0/sdk/maps#coordinates) | The coordinates of the polyline. | | id(optional) | string | The unique identifier for the polyline. This can be used to identify the clicked polyline in the onPolylineClick event. | | width(optional) | number | The width of the polyline. |

AppleMapsProperties

Only for: 

iOS

| Property | Type | Description | | --- | --- | --- | | elevation(optional) | [AppleMapsMapStyleElevation](https://docs.expo.dev/versions/v54.0.0/sdk/maps#applemapsmapstyleelevation) | Values you use to determine whether a map renders elevation. | | emphasis(optional) | [AppleMapsMapStyleEmphasis](https://docs.expo.dev/versions/v54.0.0/sdk/maps#applemapsmapstyleemphasis) | Values that control how the framework emphasizes map features. | | isMyLocationEnabled(optional) | boolean | Whether the user location is shown on the map.<br><br>Default:false | | isTrafficEnabled(optional) | boolean | Whether the traffic layer is enabled on the map. | | mapType(optional) | [AppleMapsMapType](https://docs.expo.dev/versions/v54.0.0/sdk/maps#applemapsmaptype) | Defines which map type should be used. | | pointsOfInterest(optional) | [AppleMapsPointOfInterestCategories](https://docs.expo.dev/versions/v54.0.0/sdk/maps#applemapspointofinterestcategories) | A structure you use to define points of interest to include or exclude on a map. | | polylineTapThreshold(optional) | number | The maximum distance in meters from a tap of a polyline for it to be considered a hit. If the distance is greater than the threshold, the polyline is not considered a hit. If a hit occurs, the onPolylineClick event will be triggered. Defaults to 20 meters. | | selectionEnabled(optional) | boolean | If true, the user can select a location on the map to get more information. |

AppleMapsUISettings

Only for: 

iOS

| Property | Type | Description | | --- | --- | --- | | compassEnabled(optional) | boolean | Whether the compass is enabled on the map. If enabled, the compass is only visible when the map is rotated. | | myLocationButtonEnabled(optional) | boolean | Whether the my location button is visible. | | scaleBarEnabled(optional) | boolean | Whether the scale bar is displayed when zooming. | | togglePitchEnabled(optional) | boolean | Whether the user is allowed to change the pitch type. |

AppleMapsViewType

Only for: 

iOS

| Property | Type | Description | | --- | --- | --- | | openLookAroundAsync | (coordinates: [Coordinates](https://docs.expo.dev/versions/v54.0.0/sdk/maps#coordinates) ) => [Promise](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise) <void> | Opens the look around view at specified coordinates.<br><br>coordinates: [Coordinates](https://docs.expo.dev/versions/v54.0.0/sdk/maps#coordinates) <br><br>The coordinates of the location to open the look around view at. | | setCameraPosition | (config: [CameraPosition](https://docs.expo.dev/versions/v54.0.0/sdk/maps#cameraposition-2) ) => void | Update camera position. Animation duration is not supported on iOS.<br><br>config: [CameraPosition](https://docs.expo.dev/versions/v54.0.0/sdk/maps#cameraposition-2) <br><br>New camera postion. |

CameraPosition

| Property | Type | Description | | --- | --- | --- | | coordinates(optional) | [Coordinates](https://docs.expo.dev/versions/v54.0.0/sdk/maps#coordinates) | The middle point of the camera. | | zoom(optional) | number | The zoom level of the camera. For some view sizes, lower zoom levels might not be available. |

Coordinates

| Property | Type | Description | | --- | --- | --- | | latitude(optional) | number | The latitude of the coordinate. | | longitude(optional) | number | The longitude of the coordinate. |

GoogleMapsAnchor

Only for: 

Android

| Property | Type | Description | | --- | --- | --- | | x | number | The normalized horizontal anchor point from 0.0 (left edge) to 1.0 (right edge). | | y | number | The normalized vertical anchor point from 0.0 (top edge) to 1.0 (bottom edge). |

GoogleMapsCircle

Only for: 

Android

| Property | Type | Description | | --- | --- | --- | | center | [Coordinates](https://docs.expo.dev/versions/v54.0.0/sdk/maps#coordinates) | The coordinates of the circle. | | color(optional) | [ProcessedColorValue](https://docs.expo.dev/versions/v54.0.0/sdk/maps#processedcolorvalue) \| string | The color of the circle. | | id(optional) | string | The unique identifier for the circle. This can be used to identify the clicked circle in the onCircleClick event. | | lineColor(optional) | [ProcessedColorValue](https://docs.expo.dev/versions/v54.0.0/sdk/maps#processedcolorvalue) \| string | The color of the circle line. | | lineWidth(optional) | number | The width of the circle line. | | radius | number | The radius of the circle. |

GoogleMapsContentPadding

Only for: 

Android

| Property | Type | Description | | --- | --- | --- | | bottom(optional) | number | The padding on the bottom side of the map. | | end(optional) | number | In LTR contexts, end will be applied along the right edge. In RTL contexts, end will correspond to the left edge. | | start(optional) | number | In LTR contexts, start will be applied along the left edge. In RTL contexts, start will correspond to the right edge. | | top(optional) | number | The padding on the top side of the map. |

GoogleMapsMapOptions

Only for: 

Android

| Property | Type | Description | | --- | --- | --- | | mapId(optional) | string | A map ID is a unique identifier that represents Google Map styling and configuration settings that are stored in Google Cloud.<br><br>> See: For more information, see https://developers.google.com/maps/documentation/android-sdk/map-ids/mapid-over |

GoogleMapsMapStyleOptions

Only for: 

Android

| Property | Type | Description | | --- | --- | --- | | json | string | The JSON string of the map style options.<br><br>> See: For creating map style options, see https://mapstyle.withgoogle.com/ |

GoogleMapsMarker

Only for: 

Android

| Property | Type | Description | | --- | --- | --- | | anchor(optional) | [GoogleMapsAnchor](https://docs.expo.dev/versions/v54.0.0/sdk/maps#googlemapsanchor) | The anchor used to position the anchor relative to its coordinates.<br><br>Default:bottom-center of the icon | | coordinates(optional) | [Coordinates](https://docs.expo.dev/versions/v54.0.0/sdk/maps#coordinates) | The coordinates of the marker. | | draggable(optional) | boolean | Whether the marker is draggable. | | icon(optional) | [SharedRefType](https://docs.expo.dev/versions/v54.0.0/sdk/maps#sharedreftype) <'image'> | The custom icon to display for the marker. | | id(optional) | string | The unique identifier for the marker. This can be used to identify the clicked marker in the onMarkerClick event. | | showCallout(optional) | boolean | Whether the callout should be shown when the marker is clicked. | | snippet(optional) | string | The snippet of the marker, displayed in the callout when the marker is clicked. | | title(optional) | string | The title of the marker, displayed in the callout when the marker is clicked. | | zIndex(optional) | number | The z-index to use for the marker.<br><br>Default:0 |

GoogleMapsPolygon

Only for: 

Android

| Property | Type | Description | | --- | --- | --- | | color(optional) | [ProcessedColorValue](https://docs.expo.dev/versions/v54.0.0/sdk/maps#processedcolorvalue) \| string | The color of the polygon. | | coordinates | [Coordinates[]](https://docs.expo.dev/versions/v54.0.0/sdk/maps#coordinates) | The coordinates of the circle. | | id(optional) | string | The unique identifier for the polygon. This can be used to identify the clicked polygon in the onPolygonClick event. | | lineColor(optional) | [ProcessedColorValue](https://docs.expo.dev/versions/v54.0.0/sdk/maps#processedcolorvalue) \| string | The color of the polygon. | | lineWidth(optional) | number | The width of the polygon. |

GoogleMapsPolyline

Only for: 

Android

| Property | Type | Description | | --- | --- | --- | | color(optional) | [ProcessedColorValue](https://docs.expo.dev/versions/v54.0.0/sdk/maps#processedcolorvalue) \| string | The color of the polyline. | | coordinates | [Coordinates[]](https://docs.expo.dev/versions/v54.0.0/sdk/maps#coordinates) | The coordinates of the polyline. | | geodesic(optional) | boolean | Whether the polyline is geodesic. | | id(optional) | string | The unique identifier for the polyline. This can be used to identify the clicked polyline in the onPolylineClick event. | | width(optional) | number | The width of the polyline. |

GoogleMapsProperties

Only for: 

Android

| Property | Type | Description | | --- | --- | --- | | isBuildingEnabled(optional) | boolean | Whether the building layer is enabled on the map. | | isIndoorEnabled(optional) | boolean | Whether the indoor layer is enabled on the map. | | isMyLocationEnabled(optional) | boolean | Whether finding the user's location is enabled on the map. | | isTrafficEnabled(optional) | boolean | Whether the traffic layer is enabled on the map. | | mapStyleOptions(optional) | [GoogleMapsMapStyleOptions](https://docs.expo.dev/versions/v54.0.0/sdk/maps#googlemapsmapstyleoptions) | With style options you can customize the presentation of the standard Google map styles, changing the visual display of features like roads, parks, and other points of interest. | | mapType(optional) | [GoogleMapsMapType](https://docs.expo.dev/versions/v54.0.0/sdk/maps#googlemapsmaptype) | Defines which map type should be used. | | maxZoomPreference(optional) | number | The maximum zoom level for the map. | | minZoomPreference(optional) | number | The minimum zoom level for the map. | | selectionEnabled(optional) | boolean | If true, the user can select a location on the map to get more information. |

GoogleMapsUISettings

Only for: 

Android

| Property | Type | Description | | --- | --- | --- | | compassEnabled(optional) | boolean | Whether the compass is enabled on the map. If enabled, the compass is only visible when the map is rotated. | | indoorLevelPickerEnabled(optional) | boolean | Whether the indoor level picker is enabled . | | mapToolbarEnabled(optional) | boolean | Whether the map toolbar is visible. | | myLocationButtonEnabled(optional) | boolean | Whether the my location button is visible. | | rotationGesturesEnabled(optional) | boolean | Whether rotate gestures are enabled. | | scaleBarEnabled(optional) | boolean | Whether the scale bar is displayed when zooming. | | scrollGesturesEnabled(optional) | boolean | Whether the scroll gestures are enabled. | | scrollGesturesEnabledDuringRotateOrZoom(optional) | boolean | Whether the scroll gestures are enabled during rotation or zoom. | | tiltGesturesEnabled(optional) | boolean | Whether the tilt gestures are enabled. | | togglePitchEnabled(optional) | boolean | Whether the user is allowed to change the pitch type. | | zoomControlsEnabled(optional) | boolean | Whether the zoom controls are visible. | | zoomGesturesEnabled(optional) | boolean | Whether the zoom gestures are enabled. |

GoogleMapsUserLocation

Only for: 

Android

| Property | Type | Description | | --- | --- | --- | | coordinates | [Coordinates](https://docs.expo.dev/versions/v54.0.0/sdk/maps#coordinates) | User location coordinates. | | followUserLocation | boolean | Should the camera follow the users' location. |

GoogleMapsViewType

Only for: 

Android

| Property | Type | Description | | --- | --- | --- | | setCameraPosition | (config: [SetCameraPositionConfig](https://docs.expo.dev/versions/v54.0.0/sdk/maps#setcamerapositionconfig) ) => void | Update camera position.<br><br>config: [SetCameraPositionConfig](https://docs.expo.dev/versions/v54.0.0/sdk/maps#setcamerapositionconfig) <br><br>New camera position config. |

SetCameraPositionConfig

Only for: 

Android

Type: [CameraPosition](https://docs.expo.dev/versions/v54.0.0/sdk/maps#cameraposition-2) extended by:

| Property | Type | Description | | --- | --- | --- | | duration(optional) | number | The duration of the animation in milliseconds. |

StreetViewCameraPosition

Only for: 

Android

| Property | Type | Description | | --- | --- | --- | | bearing(optional) | number | - | | coordinates | [Coordinates](https://docs.expo.dev/versions/v54.0.0/sdk/maps#coordinates) | - | | tilt(optional) | number | - | | zoom(optional) | number | - |

Enums


AppleMapPointOfInterestCategory

Only for: 

iOS

See: https://developer.apple.com/documentation/mapkit/AppleMapPointOfInterestCategory

AIRPORT

AppleMapPointOfInterestCategory.AIRPORT = "AIRPORT"

AMUSEMENT_PARK

AppleMapPointOfInterestCategory.AMUSEMENT_PARK = "AMUSEMENT_PARK"

ANIMAL_SERVICE

AppleMapPointOfInterestCategory.ANIMAL_SERVICE = "ANIMAL_SERVICE"

AQUARIUM

AppleMapPointOfInterestCategory.AQUARIUM = "AQUARIUM"

ATM

AppleMapPointOfInterestCategory.ATM = "ATM"

AUTOMOTIVE_REPAIR

AppleMapPointOfInterestCategory.AUTOMOTIVE_REPAIR = "AUTOMOTIVE_REPAIR"

BAKERY

AppleMapPointOfInterestCategory.BAKERY = "BAKERY"

BANK

AppleMapPointOfInterestCategory.BANK = "BANK"

BASEBALL

AppleMapPointOfInterestCategory.BASEBALL = "BASEBALL"

BASKETBALL

AppleMapPointOfInterestCategory.BASKETBALL = "BASKETBALL"

BEACH

AppleMapPointOfInterestCategory.BEACH = "BEACH"

BEAUTY

AppleMapPointOfInterestCategory.BEAUTY = "BEAUTY"

BOWLING

AppleMapPointOfInterestCategory.BOWLING = "BOWLING"

BREWERY

AppleMapPointOfInterestCategory.BREWERY = "BREWERY"

CAFE

AppleMapPointOfInterestCategory.CAFE = "CAFE"

CAMPGROUND

AppleMapPointOfInterestCategory.CAMPGROUND = "CAMPGROUND"

CAR_RENTAL

AppleMapPointOfInterestCategory.CAR_RENTAL = "CAR_RENTAL"

CASTLE

AppleMapPointOfInterestCategory.CASTLE = "CASTLE"

CONVENTION_CENTER

AppleMapPointOfInterestCategory.CONVENTION_CENTER = "CONVENTION_CENTER"

DISTILLERY

AppleMapPointOfInterestCategory.DISTILLERY = "DISTILLERY"

EV_CHARGER

AppleMapPointOfInterestCategory.EV_CHARGER = "EV_CHARGER"

FAIRGROUND

AppleMapPointOfInterestCategory.FAIRGROUND = "FAIRGROUND"

FIRE_STATION

AppleMapPointOfInterestCategory.FIRE_STATION = "FIRE_STATION"

FISHING

AppleMapPointOfInterestCategory.FISHING = "FISHING"

FITNESS_CENTER

AppleMapPointOfInterestCategory.FITNESS_CENTER = "FITNESS_CENTER"

FOOD_MARKET

AppleMapPointOfInterestCategory.FOOD_MARKET = "FOOD_MARKET"

FORTRESS

AppleMapPointOfInterestCategory.FORTRESS = "FORTRESS"

GAS_STATION

AppleMapPointOfInterestCategory.GAS_STATION = "GAS_STATION"

GO_KART

AppleMapPointOfInterestCategory.GO_KART = "GO_KART"

GOLF

AppleMapPointOfInterestCategory.GOLF = "GOLF"

HIKING

AppleMapPointOfInterestCategory.HIKING = "HIKING"

HOSPITAL

AppleMapPointOfInterestCategory.HOSPITAL = "HOSPITAL"

HOTEL

AppleMapPointOfInterestCategory.HOTEL = "HOTEL"

KAYAKING

AppleMapPointOfInterestCategory.KAYAKING = "KAYAKING"

LANDMARK

AppleMapPointOfInterestCategory.LANDMARK = "LANDMARK"

LAUNDRY

AppleMapPointOfInterestCategory.LAUNDRY = "LAUNDRY"

LIBRARY

AppleMapPointOfInterestCategory.LIBRARY = "LIBRARY"

MAILBOX

AppleMapPointOfInterestCategory.MAILBOX = "MAILBOX"

MARINA

AppleMapPointOfInterestCategory.MARINA = "MARINA"

MINI_GOLF

AppleMapPointOfInterestCategory.MINI_GOLF = "MINI_GOLF"

MOVIE_THEATER

AppleMapPointOfInterestCategory.MOVIE_THEATER = "MOVIE_THEATER"

MUSEUM

AppleMapPointOfInterestCategory.MUSEUM = "MUSEUM"

MUSIC_VENUE

AppleMapPointOfInterestCategory.MUSIC_VENUE = "MUSIC_VENUE"

NATIONAL_MONUMENT

AppleMapPointOfInterestCategory.NATIONAL_MONUMENT = "NATIONAL_MONUMENT"

NATIONAL_PARK

AppleMapPointOfInterestCategory.NATIONAL_PARK = "NATIONAL_PARK"

NIGHTLIFE

AppleMapPointOfInterestCategory.NIGHTLIFE = "NIGHTLIFE"

PARK

AppleMapPointOfInterestCategory.PARK = "PARK"

PARKING

AppleMapPointOfInterestCategory.PARKING = "PARKING"

PHARMACY

AppleMapPointOfInterestCategory.PHARMACY = "PHARMACY"

PLANETARIUM

AppleMapPointOfInterestCategory.PLANETARIUM = "PLANETARIUM"

POLICE

AppleMapPointOfInterestCategory.POLICE = "POLICE"

POST_OFFICE

AppleMapPointOfInterestCategory.POST_OFFICE = "POST_OFFICE"

PUBLIC_TRANSPORT

AppleMapPointOfInterestCategory.PUBLIC_TRANSPORT = "PUBLIC_TRANSPORT"

RESTAURANT

AppleMapPointOfInterestCategory.RESTAURANT = "RESTAURANT"

RESTROOM

AppleMapPointOfInterestCategory.RESTROOM = "RESTROOM"

ROCK_CLIMBING

AppleMapPointOfInterestCategory.ROCK_CLIMBING = "ROCK_CLIMBING"

RV_PARK

AppleMapPointOfInterestCategory.RV_PARK = "RV_PARK"

SCHOOL

AppleMapPointOfInterestCategory.SCHOOL = "SCHOOL"

SKATE_PARK

AppleMapPointOfInterestCategory.SKATE_PARK = "SKATE_PARK"

SKATING

AppleMapPointOfInterestCategory.SKATING = "SKATING"

SKIING

AppleMapPointOfInterestCategory.SKIING = "SKIING"

SOCCER

AppleMapPointOfInterestCategory.SOCCER = "SOCCER"

SPA

AppleMapPointOfInterestCategory.SPA = "SPA"

STADIUM

AppleMapPointOfInterestCategory.STADIUM = "STADIUM"

STORE

AppleMapPointOfInterestCategory.STORE = "STORE"

SURFING

AppleMapPointOfInterestCategory.SURFING = "SURFING"

SWIMMING

AppleMapPointOfInterestCategory.SWIMMING = "SWIMMING"

TENNIS

AppleMapPointOfInterestCategory.TENNIS = "TENNIS"

THEATER

AppleMapPointOfInterestCategory.THEATER = "THEATER"

UNIVERSITY

AppleMapPointOfInterestCategory.UNIVERSITY = "UNIVERSITY"

VOLLEYBALL

AppleMapPointOfInterestCategory.VOLLEYBALL = "VOLLEYBALL"

WINERY

AppleMapPointOfInterestCategory.WINERY = "WINERY"

ZOO

AppleMapPointOfInterestCategory.ZOO = "ZOO"

AppleMapsContourStyle

Only for: 

iOS

The style of the polyline.

GEODESIC

AppleMapsContourStyle.GEODESIC = "GEODESIC"

A geodesic line.

STRAIGHT

AppleMapsContourStyle.STRAIGHT = "STRAIGHT"

A straight line.

AppleMapsMapStyleElevation

Only for: 

iOS

AUTOMATIC

AppleMapsMapStyleElevation.AUTOMATIC = "AUTOMATIC"

The default elevation style, that renders a flat, 2D map.

FLAT

AppleMapsMapStyleElevation.FLAT = "FLAT"

A flat elevation style.

REALISTIC

AppleMapsMapStyleElevation.REALISTIC = "REALISTIC"

A value that renders a realistic, 3D map.

AppleMapsMapStyleEmphasis

Only for: 

iOS

AUTOMATIC

AppleMapsMapStyleEmphasis.AUTOMATIC = "AUTOMATIC"

The default level of emphasis.

MUTED

AppleMapsMapStyleEmphasis.MUTED = "MUTED"

A muted emphasis style, that deemphasizes the map’s imagery.

AppleMapsMapType

Only for: 

iOS

The type of map to display.

HYBRID

AppleMapsMapType.HYBRID = "HYBRID"

A satellite image of the area with road and road name layers on top.

IMAGERY

AppleMapsMapType.IMAGERY = "IMAGERY"

A satellite image of the area.

STANDARD

AppleMapsMapType.STANDARD = "STANDARD"

A street map that shows the position of all roads and some road names.

GoogleMapsColorScheme

Only for: 

Android

DARK

GoogleMapsColorScheme.DARK = "DARK"

FOLLOW_SYSTEM

GoogleMapsColorScheme.FOLLOW_SYSTEM = "FOLLOW_SYSTEM"

LIGHT

GoogleMapsColorScheme.LIGHT = "LIGHT"

GoogleMapsMapType

Only for: 

Android

The type of map to display.

HYBRID

GoogleMapsMapType.HYBRID = "HYBRID"

Satellite imagery with roads and points of interest overlayed.

NORMAL

GoogleMapsMapType.NORMAL = "NORMAL"

Standard road map.

SATELLITE

GoogleMapsMapType.SATELLITE = "SATELLITE"

Satellite imagery.

TERRAIN

GoogleMapsMapType.TERRAIN = "TERRAIN"

Topographic data.

Permissions


Android

To show the user's location on the map, the expo-maps library requires the following permissions:

  • ACCESS_COARSE_LOCATION: for approximate device location
  • ACCESS_FINE_LOCATION: for precise device location

| Android Permission | Description | | --- | --- | | ACCESS_COARSE_LOCATION | Allows an app to access approximate location.<br><br>> Alternatively, you might want [ACCESS_FINE_LOCATION](https://developer.android.com/reference/android/Manifest.permission#ACCESS_FINE_LOCATION) . | | ACCESS_FINE_LOCATION | Allows an app to access precise location.<br><br>> Alternatively, you might want [ACCESS_COARSE_LOCATION](https://developer.android.com/reference/android/Manifest.permission#ACCESS_COARSE_LOCATION) . | | FOREGROUND_SERVICE | Allows a regular application to use Service.startForeground.<br><br>> Allows a regular application to use [Service.startForeground](https://developer.android.com/reference/android/app/Service#startForeground(int,%20android.app.Notification)) . | | FOREGROUND_SERVICE_LOCATION | Allows a regular application to use Service.startForeground with the type "location".<br><br>> Allows a regular application to use [Service.startForeground](https://developer.android.com/reference/android/app/Service#startForeground(int,%20android.app.Notification)) with the type "location". | | ACCESS_BACKGROUND_LOCATION | Allows an app to access location in the background.<br><br>> If you're requesting this permission, you must also request either [ACCESS_COARSE_LOCATION](https://developer.android.com/reference/android/Manifest.permission#ACCESS_COARSE_LOCATION) or [ACCESS_FINE_LOCATION](https://developer.android.com/reference/android/Manifest.permission#ACCESS_FINE_LOCATION) . Requesting this permission by itself doesn't give you location access. |

iOS

The following usage description keys are used by this library:

| Info.plist Key | Description | | --- | --- | | NSLocationWhenInUseUsageDescription | A message that tells the user why the app is requesting access to the user’s location information while the app is running in the foreground. |