|
1 | | -## [1.1.0-dev.4](https://github.com/pinpong/react-native-google-maps-plus/compare/v1.1.0-dev.3...v1.1.0-dev.4) (2025-10-08) |
| 1 | +# react-native-google-maps-plus |
2 | 2 |
|
3 | | -### ✨ Features |
| 3 | +[](https://www.npmjs.com/package/react-native-google-maps-plus) |
| 4 | +[](https://www.npmjs.com/package/react-native-google-maps-plus) |
| 5 | +[](https://github.com/pinpong/react-native-google-maps-plus/actions/workflows/release.yml) |
| 6 | +[](https://github.com/pinpong/react-native-google-maps-plus/issues) |
| 7 | +[](./LICENSE) |
| 8 | +[](https://prettier.io/) |
| 9 | +[](https://www.typescriptlang.org/) |
| 10 | +[](https://eslint.org/) |
| 11 | +[](https://reactnative.dev/) |
| 12 | +[](https://developer.android.com/) |
| 13 | +[](https://developer.apple.com/ios/) |
4 | 14 |
|
5 | | -* add heatmap support ([ddcfccf](https://github.com/pinpong/react-native-google-maps-plus/commit/ddcfccf4cbb08b2756c20ca7215a8fe45e30befb)) |
6 | | -* add heatmap support ([96a3a08](https://github.com/pinpong/react-native-google-maps-plus/commit/96a3a08696e38f77db356d9e0e71a6e6b98a589f)) |
| 15 | +React-native wrapper for android & IOS google maps sdk |
7 | 16 |
|
8 | | -## [1.1.0-dev.3](https://github.com/pinpong/react-native-google-maps-plus/compare/v1.1.0-dev.2...v1.1.0-dev.3) (2025-10-08) |
| 17 | +## Installation |
9 | 18 |
|
10 | | -### 🐛 Bug Fixes |
| 19 | +`react-native-nitro-modules` is required as this library relies on [Nitro Modules](https://nitro.margelo.com/). |
11 | 20 |
|
12 | | -* **example:** update Podfile.lock ([0eb9a09](https://github.com/pinpong/react-native-google-maps-plus/commit/0eb9a09bca8b13241b13851c4af0857545284229)) |
| 21 | +```sh |
| 22 | +yarn add react-native-google-maps-plus react-native-nitro-modules |
| 23 | +``` |
13 | 24 |
|
14 | | -### 🔄 Code Refactors |
| 25 | +### Dependencies |
15 | 26 |
|
16 | | -* **map:** unify update logic and defaults across Android and iOS ([cdaa01a](https://github.com/pinpong/react-native-google-maps-plus/commit/cdaa01af77ae93f9e9652dd018fe18f0ca6309b4)) |
17 | | -* **map:** unify update logic and defaults across Android and iOS ([f15d638](https://github.com/pinpong/react-native-google-maps-plus/commit/f15d6388911943b5abdfd9d5f61e3423af33f064)) |
| 27 | +This package builds on native libraries for SVG rendering and Google Maps integration: |
18 | 28 |
|
19 | | -### 🛠️ Other changes |
| 29 | +- **iOS**: [SVGKit](https://github.com/SVGKit/SVGKit) |
| 30 | +- **Android**: [AndroidSVG](https://bigbadaboom.github.io/androidsvg/) |
| 31 | +- **iOS Maps SDK**: [Google Maps SDK for iOS](https://developers.google.com/maps/documentation/ios-sdk) |
| 32 | +- **Android Maps SDK**: [Google Maps SDK for Android](https://developers.google.com/maps/documentation/android-sdk) |
| 33 | +- **Maps Utility Libraries**: [Google Maps Utils for iOS](https://developers.google.com/maps/documentation/ios-sdk/utility) and [Google Maps Utils for Android](https://developers.google.com/maps/documentation/android-sdk/utility) |
20 | 34 |
|
21 | | -* update to react-native 0.82.0 ([31d5ff5](https://github.com/pinpong/react-native-google-maps-plus/commit/31d5ff5157ec8357b9d699d4dcc09bda09e11afb)) |
22 | | -* update to react-native 0.82.0 ([8c8e8ae](https://github.com/pinpong/react-native-google-maps-plus/commit/8c8e8ae1c4fcf97e04059d873461f083e4c346cf)) |
| 35 | +These are automatically linked when you install the package, but you may need to clean/rebuild your native projects after first install. |
23 | 36 |
|
24 | | -## [1.1.0-dev.2](https://github.com/pinpong/react-native-google-maps-plus/compare/v1.1.0-dev.1...v1.1.0-dev.2) (2025-10-07) |
| 37 | +## Setup API Key |
25 | 38 |
|
26 | | -### ✨ Features |
| 39 | +You will need a valid **Google Maps API Key** from the [Google Cloud Console](https://console.cloud.google.com/). |
27 | 40 |
|
28 | | -* optional marker svg ([d9bd19d](https://github.com/pinpong/react-native-google-maps-plus/commit/d9bd19d72916ec697acc9cecc58219a3df8c5d54)) |
29 | | -* optional marker svg ([#30](https://github.com/pinpong/react-native-google-maps-plus/issues/30)) ([5f8852c](https://github.com/pinpong/react-native-google-maps-plus/commit/5f8852c85741b75959f1d1e16240704cca042bb5)) |
| 41 | +### Android |
30 | 42 |
|
31 | | -### 🐛 Bug Fixes |
| 43 | +It's recommend to use [Secrets Gradle Plugin](https://developers.google.com/maps/documentation/android-sdk/secrets-gradle-plugin) to securely manage your Google Maps API Key. |
32 | 44 |
|
33 | | -* add ios privacy manifest ([175bfdf](https://github.com/pinpong/react-native-google-maps-plus/commit/175bfdf0a932aa7dcc789ac9287eb2e91a9d0bf6)) |
34 | | -* add ios privacy manifest ([#31](https://github.com/pinpong/react-native-google-maps-plus/issues/31)) ([acc394e](https://github.com/pinpong/react-native-google-maps-plus/commit/acc394e49ca5bc9eaa5e67942fd2ed645dc2332c)) |
| 45 | +--- |
35 | 46 |
|
36 | | -## [1.1.0-dev.1](https://github.com/pinpong/react-native-google-maps-plus/compare/v1.0.3-dev.1...v1.1.0-dev.1) (2025-10-07) |
| 47 | +### iOS |
37 | 48 |
|
38 | | -### ✨ Features |
| 49 | +See the official [Google Maps iOS SDK configuration guide](https://developers.google.com/maps/documentation/ios-sdk/config#get-key) for more details. |
39 | 50 |
|
40 | | -* add map ui settings support ([7921f49](https://github.com/pinpong/react-native-google-maps-plus/commit/7921f4941f6656fe9c588d4f5e9d1f5594632598)) |
41 | | -* more map features ([796be0b](https://github.com/pinpong/react-native-google-maps-plus/commit/796be0b0976926f72b5d95b1ba5d2406988f4d9e)) |
| 51 | +1. Create a `Secrets.xcconfig` file inside the **ios/** folder: |
42 | 52 |
|
43 | | -## [1.0.3-dev.1](https://github.com/pinpong/react-native-google-maps-plus/compare/v1.0.0-dev.2...v1.0.3-dev.1) (2025-10-06) |
| 53 | + ```properties |
| 54 | + MAPS_API_KEY=YOUR_IOS_MAPS_API_KEY |
| 55 | + ``` |
44 | 56 |
|
45 | | -### 🐛 Bug Fixes |
| 57 | + Include it in your project configuration file: |
46 | 58 |
|
47 | | -* dev package version ([ab9b581](https://github.com/pinpong/react-native-google-maps-plus/commit/ab9b581e7f571d09ffbe597cf8834234b43ee3a1)) |
| 59 | + ```xcconfig |
| 60 | + #include? "Secrets.xcconfig" |
| 61 | + ``` |
48 | 62 |
|
49 | | -## [1.0.0-dev.2](https://github.com/pinpong/react-native-google-maps-plus/compare/v1.0.0-dev.1...v1.0.0-dev.2) (2025-10-06) |
| 63 | +2. Reference the API key in your **Info.plist**: |
50 | 64 |
|
51 | | -### 🐛 Bug Fixes |
| 65 | + ```xml |
| 66 | + <key>MAPS_API_KEY</key> |
| 67 | + <string>$(MAPS_API_KEY)</string> |
| 68 | + ``` |
52 | 69 |
|
53 | | -* dev package version ([1317f23](https://github.com/pinpong/react-native-google-maps-plus/commit/1317f234d832a623c6e5dbce4dafd9154da73857)) |
| 70 | +3. Provide the key programmatically in **AppDelegate.swift**: |
54 | 71 |
|
55 | | -## 1.0.0-dev.1 (2025-10-06) |
| 72 | + ```swift |
| 73 | + import GoogleMaps |
56 | 74 |
|
57 | | -### ✨ Features |
| 75 | + @UIApplicationMain |
| 76 | + class AppDelegate: UIResponder, UIApplicationDelegate { |
| 77 | + func application(_ application: UIApplication, |
| 78 | + didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool { |
| 79 | + if let apiKey = Bundle.main.object(forInfoDictionaryKey: "MAPS_API_KEY") as? String { |
| 80 | + GMSServices.provideAPIKey(apiKey) |
| 81 | + } |
| 82 | + return true |
| 83 | + } |
| 84 | + } |
| 85 | + ``` |
58 | 86 |
|
59 | | -* add mapCircle support ([8e32d14](https://github.com/pinpong/react-native-google-maps-plus/commit/8e32d14ae6d3e8254a46ffbb19fd3eb26575f46d)) |
60 | | -* add mapId support ([75f73fa](https://github.com/pinpong/react-native-google-maps-plus/commit/75f73fac949f8e2a5112e1456226e60de8540474)) |
61 | | -* add mapType ([754df51](https://github.com/pinpong/react-native-google-maps-plus/commit/754df51a8819ce5475d29262bbf95d8f0586393f)) |
62 | | -* add mapType ([300614f](https://github.com/pinpong/react-native-google-maps-plus/commit/300614f22419f166c2482025f66b761145e75394)) |
63 | | -* add mapType ([e32a3f5](https://github.com/pinpong/react-native-google-maps-plus/commit/e32a3f59fc1128b6a4c295d4e5d74d8afa7aa3cd)) |
| 87 | +--- |
64 | 88 |
|
65 | | -### 🐛 Bug Fixes |
| 89 | +## Usage |
66 | 90 |
|
67 | | -* build script ([98e194e](https://github.com/pinpong/react-native-google-maps-plus/commit/98e194e61d08af96ce75e156a6f5e3a5378c1b4c)) |
68 | | -* name conflict ([faf8d5e](https://github.com/pinpong/react-native-google-maps-plus/commit/faf8d5e7a0f79bfceb8454510e8e5ad3771fdbd2)) |
69 | | -* name conflict ([7217c11](https://github.com/pinpong/react-native-google-maps-plus/commit/7217c113bc2e5742bbc4b119eec7672c0b240cba)) |
70 | | -* react type ([36e22d5](https://github.com/pinpong/react-native-google-maps-plus/commit/36e22d59f0746ad9759799465eefed8f66a19049)) |
71 | | -* release ([afbb9cd](https://github.com/pinpong/react-native-google-maps-plus/commit/afbb9cdf0261c35fcd4c6423096fbecaa482f704)) |
72 | | -* set npm publish to true ([ed7544b](https://github.com/pinpong/react-native-google-maps-plus/commit/ed7544b5c0b39cec418a83842e215253ac7b6eef)) |
| 91 | +Checkout the example app in the [example](./example) folder. |
73 | 92 |
|
74 | | -### 🔄 Code Refactors |
| 93 | +# Troubleshooting |
75 | 94 |
|
76 | | -* nitrogen-patch.js ([20fbb0d](https://github.com/pinpong/react-native-google-maps-plus/commit/20fbb0d7bea58bd54ade53119dc510d0ce9b18f9)) |
77 | | -* optional props ([9faa702](https://github.com/pinpong/react-native-google-maps-plus/commit/9faa7024c2bea0818734cb5831b93c4d360da0bd)) |
| 95 | +## Android |
78 | 96 |
|
79 | | -### 📚 Documentation |
| 97 | +- **API key not found** |
| 98 | + Make sure `secrets.properties` exists under `android/` and contains your `MAPS_API_KEY`. |
| 99 | + Run `./gradlew clean` and rebuild. |
80 | 100 |
|
81 | | -* **readme:** update setup instructions ([9f88702](https://github.com/pinpong/react-native-google-maps-plus/commit/9f88702b187fde5c2e3d852f1d0aeeac48f8222b)) |
82 | | -* update README.md ([60936c9](https://github.com/pinpong/react-native-google-maps-plus/commit/60936c9351f95e590b779883d161aad1272f4a1b)) |
83 | | -* update README.md ([00d3f65](https://github.com/pinpong/react-native-google-maps-plus/commit/00d3f656679415a8105fff2ae52fd0bd3106e472)) |
84 | | -* update README.md ([7354d38](https://github.com/pinpong/react-native-google-maps-plus/commit/7354d3822298b75ad28024f5488cc25e70891b9c)) |
85 | | -* update README.md ([bb2bf47](https://github.com/pinpong/react-native-google-maps-plus/commit/bb2bf47d7b273e1dd02a44425713ebe7c9bfb612)) |
| 101 | +## iOS |
86 | 102 |
|
87 | | -### 🛠️ Other changes |
| 103 | +- **`GMSServices must be configured before use`** |
| 104 | + Ensure your key is in `Info.plist` and/or provided via `GMSServices.provideAPIKey(...)` in `AppDelegate.swift`. |
88 | 105 |
|
89 | | -* add dev badge ([c8660b7](https://github.com/pinpong/react-native-google-maps-plus/commit/c8660b75581f447953fba6c9ec440146fcf8f48d)) |
90 | | -* format ([e67d939](https://github.com/pinpong/react-native-google-maps-plus/commit/e67d939e23a8db82432334c767f780ebe2320d6c)) |
91 | | -* initial commit ([d240a87](https://github.com/pinpong/react-native-google-maps-plus/commit/d240a870fa08e5a01ef8b3e981f7e78c7e113fef)) |
92 | | -* update .gitignore ([c15be5e](https://github.com/pinpong/react-native-google-maps-plus/commit/c15be5eb436d05f1f5a25fe7c8249e7c23eea3b2)) |
| 106 | +- **Build fails with `Node.h` import error from SVGKit** |
| 107 | + SVGKit uses a header `Node.h` which can conflict with iOS system headers. |
| 108 | + You can patch it automatically in your **Podfile** inside the `post_install` hook: |
| 109 | + |
| 110 | + ```ruby |
| 111 | + post_install do |installer| |
| 112 | + react_native_post_install( |
| 113 | + installer, |
| 114 | + config[:reactNativePath], |
| 115 | + :mac_catalyst_enabled => false, |
| 116 | + ) |
| 117 | + # Force iOS 16+ to avoid deployment target warnings |
| 118 | + installer.pods_project.targets.each do |target| |
| 119 | + target.build_configurations.each do |config| |
| 120 | + config.build_settings['IPHONEOS_DEPLOYMENT_TARGET'] = '16.0' |
| 121 | + end |
| 122 | + end |
| 123 | + |
| 124 | + # Patch SVGKit includes to avoid Node.h conflicts |
| 125 | + require 'fileutils' |
| 126 | + svgkit_path = File.join(installer.sandbox.pod_dir('SVGKit'), 'Source') |
| 127 | + Dir.glob(File.join(svgkit_path, '**', '*.{h,m}')).each do |file| |
| 128 | + FileUtils.chmod("u+w", file) |
| 129 | + text = File.read(file) |
| 130 | + new_contents = text.gsub('#import "Node.h"', '#import "SVGKit/Node.h"') |
| 131 | + File.open(file, 'w') { |f| f.write(new_contents) } |
| 132 | + end |
| 133 | + end |
| 134 | + ``` |
| 135 | + |
| 136 | + After applying this, run: |
| 137 | + |
| 138 | + ```sh |
| 139 | + cd ios && pod install --repo-update |
| 140 | + ``` |
| 141 | + |
| 142 | +- **Maps not rendering** |
| 143 | + - Check that your API key has **Maps SDK for Android/iOS** enabled in Google Cloud Console. |
| 144 | + - Make sure the key is not restricted to wrong bundle IDs or SHA1 fingerprints. |
| 145 | + |
| 146 | +## Contributing |
| 147 | + |
| 148 | +- [Development workflow](CONTRIBUTING.md#development-workflow) |
| 149 | +- [Sending a pull request](CONTRIBUTING.md#sending-a-pull-request) |
| 150 | +- [Code of conduct](CODE_OF_CONDUCT.md) |
| 151 | + |
| 152 | +## License |
| 153 | + |
| 154 | +MIT |
| 155 | + |
| 156 | +--- |
| 157 | + |
| 158 | +Made with [create-react-native-library](https://github.com/callstack/react-native-builder-bob) |
0 commit comments