react-native-maps-expo-plugin
Version:
Expo config plugin for react-native-maps iOS Google Maps setup
80 lines (53 loc) • 3.06 kB
Markdown
Expo Config Plugin for setting up Google Maps in react-native-maps on iOS. Created specifically to support Continuous Native Generation (CNG) workflow.
## What is CNG?
Continuous Native Generation (CNG) is a process for building an Expo app where your [native projects](https://docs.expo.dev/workflow/overview#android-and-ios-native-projects) are generated on-demand from your app.json and package.json, similar to how your node_modules are generated from your package.json.
You can add the native project directories (android and ios) to your .gitignore and/or delete the project at any time, then re-generate them from the Expo app config with npx expo prebuild whenever required. You might never even run prebuild on your own development machine if you use a cloud-based development workflow.
Using CNG can make upgrading to new versions of React Native much easier. It can simplify project maintenance and facilitate setting up complex features such as [App Clips](https://github.com/bndkt/react-native-app-clip), [share extensions](https://github.com/timedtext/expo-config-plugin-ios-share-extension), and [push notifications](https://github.com/OneSignal/onesignal-expo-plugin). This is all made possible with [config plugins](https://docs.expo.dev/config-plugins/introduction). Learn more about [CNG](https://docs.expo.dev/workflow/continuous-native-generation).
## Why this plugin exists
The official react-native-maps installation requires manual modifications to native iOS files that get wiped out when using CNG (`npx expo prebuild --clean`). This plugin automatically handles:
- Adding Google Maps pod to Podfile
- Adding location permission to Info.plist
- Initializing Google Maps in AppDelegate
Why this is better than tweaking the generated native files yourself:
Here's Expo documentation on why tweaking the files yourself is not a good idea: [docs.expo.dev/workflow/overview/#what-if-i-want-to-edit-the](https://docs.expo.dev/workflow/overview/#what-if-i-want-to-edit-the).
In other words, it will do the `react-native-maps` installation instructions for you every time, so you can keep enjoying CNG!
## Installation
```bash
npm install react-native-maps react-native-maps-expo-plugin
```
## Usage
1. Add plugin to your app.json/app.config.js:
```json
{
"plugins": [
[
"react-native-maps-expo-plugin",
{
"googleMapsApiKey": "YOUR_GOOGLE_MAPS_API_KEY"
}
]
]
}
```
2. Generate native code and build:
```bash
npx expo prebuild
npx expo run:ios
npx expo prebuild --clean
npx expo run:ios
```
- Expo SDK 50 or newer
- react-native-maps installed in your project
1. Go to [Google Cloud Console](https://console.cloud.google.com/)
2. Create or select a project
3. Enable Maps SDK for iOS
4. Create credentials (API key)
5. Add restrictions to the API key (recommended)
## License
MIT