A library that provides access to Google Maps on Android and Apple Maps on iOS.
Expo Maps is currently in alpha and subject to breaking changes. It is not available in the Expo Go app.
-
npx expo install expo-maps
If you are installing this in an existing React Native app, start by installing expo
in your project. Then, follow the additional instructions as mentioned by the library's README under "Installation in bare React Native projects" section.
Expo Maps provides access to the platform native map APIs on Android and iOS.
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.
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
2
Copy your app's SHA-1 certificate fingerprint
3
Create an API key
android.package
from app.json (for example: com.company.myapp
) to the package name field.4
Add the API key to your project
android.config.googleMaps.apiKey
field.expo-maps
.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>;
}
}
import { AppleMaps, GoogleMaps } from 'expo-maps';
// ApplesMaps.View and GoogleMaps.View are the React components
Type: React.Element<MapProps>
Type: React.Element<MapProps>
(event: {
bearing: number,
coordinates: Coordinates,
tilt: number,
zoom: number
}) => void
Lambda invoked when the map was moved by the user.
event: {
bearing: number,
coordinates: Coordinates,
tilt: number,
zoom: number
}
(event: {
coordinates: 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.
event: {
coordinates: Coordinates
}
StyleProp<ViewStyle>
MapUiSettings
The MapUiSettings
to be used for UI-specific settings on the map.
(event: {
bearing: number,
coordinates: Coordinates,
tilt: number,
zoom: number
}) => void
Lambda invoked when the map was moved by the user.
event: {
bearing: number,
coordinates: Coordinates,
tilt: number,
zoom: number
}
(event: {
coordinates: 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.
event: {
coordinates: Coordinates
}
(event: {
coordinates: Coordinates
}) => void
Lambda invoked when the user long presses on the map.
event: {
coordinates: Coordinates
}
(event: {
coordinates: Coordinates,
name: string
}) => void
Lambda invoked when a POI is clicked.
event: {
coordinates: Coordinates,
name: string
}
StyleProp<ViewStyle>
MapUiSettings
The MapUiSettings
to be used for UI-specific settings on the map.
Coordinates
StyleProp<ViewStyle>
AppleMaps Methods
GoogleMaps Methods
Promise<undefined | PermissionResponse>
Promise<undefined | PermissionResponse>
Type: Marker
extended by:
Property | Type | Description |
---|---|---|
backgroundColor(optional) | string | The background color of the annotation. |
icon(optional) | 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. |
Property | Type | Description |
---|---|---|
coordinates(optional) | Coordinates | The middle point of the camera. |
zoom(optional) | number | The zoom level of the camera. For some view sizez, lower zoom levels might not be available. |
Property | Type | Description |
---|---|---|
coordinates(optional) | Coordinates | The middle point of the camera. |
zoom(optional) | number | The zoom level of the camera. For some view sizez, lower zoom levels might not be available. |
Property | Type | Description |
---|---|---|
latitude(optional) | number | The latitude of the coordinate. |
longitude(optional) | number | The longitude of the coordinate. |
Property | Type | Description |
---|---|---|
getPermissionsAsync | () => Promise<PermissionResponse> | Checks user's permissions for accessing location. |
requestPermissionsAsync | () => Promise<PermissionResponse> | Asks the user to grant permissions for location. |
Property | Type | Description |
---|---|---|
isTrafficEnabled(optional) | boolean | Whether the traffic layer is enabled on the map. |
mapType(optional) | MapType | Defines which map type should be used. |
selectionEnabled(optional) | boolean | If true, the user can select a location on the map to get more information. |
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. |
mapType(optional) | MapType | Defines which map type should be used. |
maxZoomPreference(optional) | number | Only for: Android The maximum zoom level for the map. |
minZoomPreference(optional) | number | Only for: Android The minimum zoom level for the map. |
selectionEnabled(optional) | boolean | Only for: iOS If true, the user can select a location on the map to get more information. |
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. |
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 | Only for: iOS 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 | Only for: iOS 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. |
Property | Type | Description |
---|---|---|
coordinates(optional) | Coordinates | The coordinates of the marker. |
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. |
Property | Type | Description |
---|---|---|
coordinates(optional) | Coordinates | The coordinates of the marker. |
draggable(optional) | boolean | Whether the marker is draggable. |
icon(optional) | SharedRefType<'image'> | The custom icon to display for the marker. |
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. |
Property | Type | Description |
---|---|---|
coordinates | Coordinates | User location coordinates. |
followUserLocation | boolean | Should the camera follow the users location. |
The type of map to display.