react-native-maps provides a Map component that uses Apple Maps or Google Maps on iOS and Google Maps on Android. Expo uses react-native-maps at react-community/react-native-maps. No setup required for use within the Expo Client app. See below for instructions on how to configure for deployment as a standalone app on Android and iOS.
Choose the Android apps radio button under Key restriction.
Click the + Add package name and fingerprint button.
Add your android.package from app.json (eg: ca.brentvatne.growlerprowler) to the Package name field.
Run expo fetch:android:hashes.
Copy Google Certificate Fingerprint from the output from step 9 and insert it in the "SHA-1 certificate fingerprint" field.
Copy the API key (the first text input on the page) into app.json under the android.config.googleMaps.apiKey field. See an example diff.
Press Save and then rebuild the app like in step 1.
Deploying to the Google Play Store
Since your app is most likely using App Signing by Google Play, you will need to grab their app signing certificate in production rather than the upload certificate returned by expo fetch:android:hashes. You can do this by grabbing the signature from Play Console -> Your App -> Release management -> App signing, and then going to the API Dashboard -> Credentials and adding the signature to your existing credential.
Note: The API key can be accessed through your app's Constants (via Constants.manifest.android.config.googleMaps.apiKey) if you'd prefer not to have it in your code directly.
Deploying Google Maps to a standalone app on iOS
Apple Maps will work with no extra configuration. For Google Maps:
Open your browser to the Google API Manager and create a project, or select your existing project if you've already made one for this app.
Go to the project and enable the Google Maps SDK for iOS
Choose the iOS apps radio button under Key restriction.
Under Accept requests from an iOS application with one of these bundle identifiers, click the Add an item button.
Add your ios.bundleIdentifier from app.json (eg: ca.brentvatne.growlerprowler) to the bundle ID field.
Copy the API key (the first text input on the page) into app.json under the ios.config.googleMapsApiKey field.
Press Save and then rebuild the app.
Note: This can also be accessed through your app's Constants (via Constants.manifest.ios.config.googleMapsApiKey) if you'd prefer not to have the API key in your code.
Deploying Google Maps to ExpoKit for iOS
If you want to add MapView with Google Maps to an ExpoKit (ejected) project on iOS, you may need to manually provide a key by calling:
[GMSServices provideApiKey:@"your api key"]
Alternatively, you can provide the GMSApiKey key in your app's Info.plist and ExpoKit will pick it up automatically. If you ejected after already configuring Google Maps, the eject step may have already provided this for you.
Web is experimental! You may need to add the web target to your Expo app.
To use this in web, add the following script to your web/index.html. This script may already be present, if this is the case, just replace the API_KEY with your Google Maps API key which you can obtain here: Google Maps: Get API key