Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
45 commits
Select commit Hold shift + click to select a range
c15be5e
chore: update .gitignore
pinpong Oct 4, 2025
9faa702
refactor: optional props
pinpong Oct 4, 2025
e32a3f5
feat: add mapType
pinpong Oct 4, 2025
300614f
feat: add mapType
pinpong Oct 4, 2025
754df51
feat: add mapType
pinpong Oct 6, 2025
df5a1cb
style: add swiftformat
pinpong Oct 6, 2025
130c5f6
style: add swiftformat
pinpong Oct 6, 2025
20fbb0d
refactor: nitrogen-patch.js
pinpong Oct 6, 2025
75f73fa
feat: add mapId support
pinpong Oct 6, 2025
8fccfa9
Feat/mapId
pinpong Oct 6, 2025
8e32d14
feat: add mapCircle support
pinpong Oct 6, 2025
cede38f
build: dev release
pinpong Oct 6, 2025
3ef0608
feat/mapCircle (#27)
pinpong Oct 6, 2025
c8660b7
chore: add dev badge
pinpong Oct 6, 2025
55ebf19
build: dev release
pinpong Oct 6, 2025
f34299c
🔖 release: 1.0.0-dev.1 [skip ci]
semantic-release-bot Oct 6, 2025
1317f23
fix: dev package version
pinpong Oct 6, 2025
1e14444
🔖 release: 1.0.0-dev.2 [skip ci]
semantic-release-bot Oct 6, 2025
ab9b581
fix: dev package version
pinpong Oct 6, 2025
9cc361b
🔖 release: 1.0.3-dev.1 [skip ci]
semantic-release-bot Oct 6, 2025
7921f49
feat: add map ui settings support
pinpong Oct 7, 2025
796be0b
feat: more map features
pinpong Oct 7, 2025
0a3de11
🔖 release: 1.1.0-dev.1 [skip ci]
semantic-release-bot Oct 7, 2025
d9bd19d
feat: optional marker svg
pinpong Oct 7, 2025
175bfdf
fix: add ios privacy manifest
pinpong Oct 7, 2025
163ff11
ci: add pull request template
pinpong Oct 7, 2025
28d1b6b
ci: add pull request template (#32)
pinpong Oct 7, 2025
acc394e
fix: add ios privacy manifest (#31)
pinpong Oct 7, 2025
5f8852c
feat: optional marker svg (#30)
pinpong Oct 7, 2025
b086dd1
🔖 release: 1.1.0-dev.2 [skip ci]
semantic-release-bot Oct 7, 2025
e822806
ci: cancel concurrent release actions
pinpong Oct 7, 2025
43f4754
ci: cancel concurrent release actions
pinpong Oct 7, 2025
8c8e8ae
chore: update to react-native 0.82.0
pinpong Oct 8, 2025
31d5ff5
chore: update to react-native 0.82.0
pinpong Oct 8, 2025
f15d638
refactor(map): unify update logic and defaults across Android and iOS
pinpong Oct 8, 2025
cdaa01a
refactor(map): unify update logic and defaults across Android and iOS
pinpong Oct 8, 2025
908bb27
ci: fix pod cache
pinpong Oct 8, 2025
d0b129e
ci: update pull request template
pinpong Oct 8, 2025
0eb9a09
fix(example): update Podfile.lock
pinpong Oct 8, 2025
6593636
🔖 release: 1.1.0-dev.3 [skip ci]
semantic-release-bot Oct 8, 2025
96a3a08
feat: add heatmap support
pinpong Oct 8, 2025
ddcfccf
feat: add heatmap support
pinpong Oct 8, 2025
ec88db2
🔖 release: 1.1.0-dev.4 [skip ci]
semantic-release-bot Oct 8, 2025
6903540
Merge branch 'main' into dev
pinpong Oct 8, 2025
4d2de6a
🔖 release: 1.1.0-dev.5 [skip ci]
semantic-release-bot Oct 8, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
52 changes: 52 additions & 0 deletions .github/PULL_REQUEST_TEMPLATE/pull_request_template.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
## Pull request

Please ensure this PR targets the **`dev` branch** and follows the project conventions.
CI already runs linting, formatting, and build checks automatically.

---

### Before submitting

- [ ] This PR targets the `dev` branch (not `main`)
- [ ] Commit messages follow the semantic-release format
- [ ] No debug logs or sensitive data included

---

### Summary

Short description of what this PR changes or adds.

---

### Type of change

- [ ] Feature
- [ ] Fix
- [ ] Refactor
- [ ] Internal / CI
- [ ] Documentation

---

### Scope

- [ ] Android
- [ ] iOS
- [ ] Core
- [ ] Example App
- [ ] Docs

---

### Related

List any related issues, pull requests, or discussions.
Use the format:
`Fixes #123`, `Refs #456`, `Close #789`

---

### Additional notes

_(Optional – anything relevant for the reviewer)_
10 changes: 8 additions & 2 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
@@ -1,8 +1,14 @@
name: Release Package

on:
push:
branches:
- main
- dev

concurrency:
group: release-${{ github.ref_name }}
cancel-in-progress: true

permissions:
contents: read
Expand All @@ -15,12 +21,12 @@ jobs:
contents: write
issues: write
pull-requests: write

steps:
- name: Checkout
uses: actions/checkout@v5.0.0
with:
ref: main
fetch-depth: 0
fetch-depth: 0 # wichtig für semantic-release, damit alle Tags vorhanden sind

- name: Setup
uses: ./.github/actions/setup
Expand Down
4 changes: 4 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -89,4 +89,8 @@ nitrogen/
example/ios/Secrets.xcconfig
example/android/secrets.properties

# Kotlin
android/.kotlin/
android/.kotlinc/

tsconfig.tsbuildinfo
170 changes: 149 additions & 21 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,37 +1,165 @@
## [1.0.2](https://github.com/pinpong/react-native-google-maps-plus/compare/v1.0.1...v1.0.2) (2025-10-02)
## [1.1.0-dev.5](https://github.com/pinpong/react-native-google-maps-plus/compare/v1.1.0-dev.4...v1.1.0-dev.5) (2025-10-08)

### 🐛 Bug Fixes

* build script ([d1f11f2](https://github.com/pinpong/react-native-google-maps-plus/commit/d1f11f237900f929689b72dfb41054dac0790a37))
* build script ([98e194e](https://github.com/pinpong/react-native-google-maps-plus/commit/98e194e61d08af96ce75e156a6f5e3a5378c1b4c))
* name conflict ([faf8d5e](https://github.com/pinpong/react-native-google-maps-plus/commit/faf8d5e7a0f79bfceb8454510e8e5ad3771fdbd2))
* name conflict ([7217c11](https://github.com/pinpong/react-native-google-maps-plus/commit/7217c113bc2e5742bbc4b119eec7672c0b240cba))
* react type ([36e22d5](https://github.com/pinpong/react-native-google-maps-plus/commit/36e22d59f0746ad9759799465eefed8f66a19049))
* release ([#18](https://github.com/pinpong/react-native-google-maps-plus/issues/18)) ([b271ccc](https://github.com/pinpong/react-native-google-maps-plus/commit/b271ccc69f9cb3e48c865801bdd104fd6065b557))

## [1.0.1](https://github.com/pinpong/react-native-google-maps-plus/compare/v1.0.0...v1.0.1) (2025-10-02)
# react-native-google-maps-plus

### 🐛 Bug Fixes
[![npm version](https://img.shields.io/npm/v/react-native-google-maps-plus.svg?logo=npm&color=cb0000)](https://www.npmjs.com/package/react-native-google-maps-plus)
[![Dev Release](https://img.shields.io/npm/v/react-native-google-maps-plus/dev.svg?label=dev%20release&color=orange&logo=githubactions)](https://www.npmjs.com/package/react-native-google-maps-plus)
[![Release](https://github.com/pinpong/react-native-google-maps-plus/actions/workflows/release.yml/badge.svg)](https://github.com/pinpong/react-native-google-maps-plus/actions/workflows/release.yml)
[![Issues](https://img.shields.io/github/issues/pinpong/react-native-google-maps-plus?logo=github)](https://github.com/pinpong/react-native-google-maps-plus/issues)
[![License](https://img.shields.io/github/license/pinpong/react-native-google-maps-plus?logo=open-source-initiative&logoColor=green)](./LICENSE)
[![Code Style: Prettier](https://img.shields.io/badge/code_style-prettier-ff69b4.svg?logo=prettier&logoColor=white)](https://prettier.io/)
[![TypeScript](https://img.shields.io/badge/%3C/%3E-TypeScript-blue.svg?logo=typescript)](https://www.typescriptlang.org/)
[![Lint](https://img.shields.io/badge/lint-eslint-green.svg?logo=eslint&logoColor=white)](https://eslint.org/)
[![React Native](https://img.shields.io/badge/react--native-%3E%3D0.81.0-61dafb.svg?logo=react)](https://reactnative.dev/)
[![Platform: Android](https://img.shields.io/badge/platform-android-green.svg?logo=android&logoColor=white)](https://developer.android.com/)
[![Platform: iOS](https://img.shields.io/badge/platform-iOS-lightgrey.svg?logo=apple&logoColor=black)](https://developer.apple.com/ios/)

* release ([afbb9cd](https://github.com/pinpong/react-native-google-maps-plus/commit/afbb9cdf0261c35fcd4c6423096fbecaa482f704))
* release ([#18](https://github.com/pinpong/react-native-google-maps-plus/issues/18)) ([b271ccc](https://github.com/pinpong/react-native-google-maps-plus/commit/b271ccc69f9cb3e48c865801bdd104fd6065b557))
React-native wrapper for android & IOS google maps sdk

### 🛠️ Other changes
## Installation

* format ([e67d939](https://github.com/pinpong/react-native-google-maps-plus/commit/e67d939e23a8db82432334c767f780ebe2320d6c))
`react-native-nitro-modules` is required as this library relies on [Nitro Modules](https://nitro.margelo.com/).

## 1.0.0 (2025-10-02)
```sh
yarn add react-native-google-maps-plus react-native-nitro-modules
```

### 🐛 Bug Fixes
### Dependencies

This package builds on native libraries for SVG rendering and Google Maps integration:

- **iOS**: [SVGKit](https://github.com/SVGKit/SVGKit)
- **Android**: [AndroidSVG](https://bigbadaboom.github.io/androidsvg/)
- **iOS Maps SDK**: [Google Maps SDK for iOS](https://developers.google.com/maps/documentation/ios-sdk)
- **Android Maps SDK**: [Google Maps SDK for Android](https://developers.google.com/maps/documentation/android-sdk)
- **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)

These are automatically linked when you install the package, but you may need to clean/rebuild your native projects after first install.

## Setup API Key

You will need a valid **Google Maps API Key** from the [Google Cloud Console](https://console.cloud.google.com/).

### Android

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.

---

### iOS

See the official [Google Maps iOS SDK configuration guide](https://developers.google.com/maps/documentation/ios-sdk/config#get-key) for more details.

1. Create a `Secrets.xcconfig` file inside the **ios/** folder:

```properties
MAPS_API_KEY=YOUR_IOS_MAPS_API_KEY
```

Include it in your project configuration file:

```xcconfig
#include? "Secrets.xcconfig"
```

2. Reference the API key in your **Info.plist**:

```xml
<key>MAPS_API_KEY</key>
<string>$(MAPS_API_KEY)</string>
```

3. Provide the key programmatically in **AppDelegate.swift**:

```swift
import GoogleMaps

@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {
func application(_ application: UIApplication,
didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
if let apiKey = Bundle.main.object(forInfoDictionaryKey: "MAPS_API_KEY") as? String {
GMSServices.provideAPIKey(apiKey)
}
return true
}
}
```

---

## Usage

Checkout the example app in the [example](./example) folder.

# Troubleshooting

## Android

- **API key not found**
Make sure `secrets.properties` exists under `android/` and contains your `MAPS_API_KEY`.
Run `./gradlew clean` and rebuild.

## iOS

- **`GMSServices must be configured before use`**
Ensure your key is in `Info.plist` and/or provided via `GMSServices.provideAPIKey(...)` in `AppDelegate.swift`.

- **Build fails with `Node.h` import error from SVGKit**
SVGKit uses a header `Node.h` which can conflict with iOS system headers.
You can patch it automatically in your **Podfile** inside the `post_install` hook:

```ruby
post_install do |installer|
react_native_post_install(
installer,
config[:reactNativePath],
:mac_catalyst_enabled => false,
)
# Force iOS 16+ to avoid deployment target warnings
installer.pods_project.targets.each do |target|
target.build_configurations.each do |config|
config.build_settings['IPHONEOS_DEPLOYMENT_TARGET'] = '16.0'
end
end

# Patch SVGKit includes to avoid Node.h conflicts
require 'fileutils'
svgkit_path = File.join(installer.sandbox.pod_dir('SVGKit'), 'Source')
Dir.glob(File.join(svgkit_path, '**', '*.{h,m}')).each do |file|
FileUtils.chmod("u+w", file)
text = File.read(file)
new_contents = text.gsub('#import "Node.h"', '#import "SVGKit/Node.h"')
File.open(file, 'w') { |f| f.write(new_contents) }
end
end
```

After applying this, run:

```sh
cd ios && pod install --repo-update
```

- **Maps not rendering**
- Check that your API key has **Maps SDK for Android/iOS** enabled in Google Cloud Console.
- Make sure the key is not restricted to wrong bundle IDs or SHA1 fingerprints.

## Contributing

* set npm publish to true ([ed7544b](https://github.com/pinpong/react-native-google-maps-plus/commit/ed7544b5c0b39cec418a83842e215253ac7b6eef))
- [Development workflow](CONTRIBUTING.md#development-workflow)
- [Sending a pull request](CONTRIBUTING.md#sending-a-pull-request)
- [Code of conduct](CODE_OF_CONDUCT.md)

### 📚 Documentation
## License

* update README.md ([60936c9](https://github.com/pinpong/react-native-google-maps-plus/commit/60936c9351f95e590b779883d161aad1272f4a1b))
* update README.md ([00d3f65](https://github.com/pinpong/react-native-google-maps-plus/commit/00d3f656679415a8105fff2ae52fd0bd3106e472))
* update README.md ([7354d38](https://github.com/pinpong/react-native-google-maps-plus/commit/7354d3822298b75ad28024f5488cc25e70891b9c))
* update README.md ([bb2bf47](https://github.com/pinpong/react-native-google-maps-plus/commit/bb2bf47d7b273e1dd02a44425713ebe7c9bfb612))
MIT

### 🛠️ Other changes
---

* initial commit ([d240a87](https://github.com/pinpong/react-native-google-maps-plus/commit/d240a870fa08e5a01ef8b3e981f7e78c7e113fef))
Made with [create-react-native-library](https://github.com/callstack/react-native-builder-bob)
31 changes: 17 additions & 14 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,15 +1,16 @@
# react-native-google-maps-plus

[![npm version](https://img.shields.io/npm/v/react-native-google-maps-plus.svg)](https://www.npmjs.com/package/react-native-google-maps-plus)
[![npm version](https://img.shields.io/npm/v/react-native-google-maps-plus.svg?logo=npm&color=cb0000)](https://www.npmjs.com/package/react-native-google-maps-plus)
[![Dev Release](https://img.shields.io/npm/v/react-native-google-maps-plus/dev.svg?label=dev%20release&color=orange&logo=githubactions)](https://www.npmjs.com/package/react-native-google-maps-plus)
[![Release](https://github.com/pinpong/react-native-google-maps-plus/actions/workflows/release.yml/badge.svg)](https://github.com/pinpong/react-native-google-maps-plus/actions/workflows/release.yml)
[![Issues](https://img.shields.io/github/issues/pinpong/react-native-google-maps-plus)](https://github.com/pinpong/react-native-google-maps-plus/issues)
[![License](https://img.shields.io/github/license/pinpong/react-native-google-maps-plus)](./LICENSE)
[![Code Style: Prettier](https://img.shields.io/badge/code_style-prettier-ff69b4.svg)](https://prettier.io/)
[![TypeScript](https://img.shields.io/badge/%3C/%3E-TypeScript-blue.svg)](https://www.typescriptlang.org/)
[![Lint](https://img.shields.io/badge/lint-eslint-green.svg)](https://eslint.org/)
[![React Native](https://img.shields.io/badge/react--native-%3E%3D0.81.0-61dafb.svg)](https://reactnative.dev/)
[![Platform: Android](https://img.shields.io/badge/platform-android-green.svg)](https://developer.android.com/)
[![Platform: iOS](https://img.shields.io/badge/platform-iOS-lightgrey.svg)](https://developer.apple.com/ios/)
[![Issues](https://img.shields.io/github/issues/pinpong/react-native-google-maps-plus?logo=github)](https://github.com/pinpong/react-native-google-maps-plus/issues)
[![License](https://img.shields.io/github/license/pinpong/react-native-google-maps-plus?logo=open-source-initiative&logoColor=green)](./LICENSE)
[![Code Style: Prettier](https://img.shields.io/badge/code_style-prettier-ff69b4.svg?logo=prettier&logoColor=white)](https://prettier.io/)
[![TypeScript](https://img.shields.io/badge/%3C/%3E-TypeScript-blue.svg?logo=typescript)](https://www.typescriptlang.org/)
[![Lint](https://img.shields.io/badge/lint-eslint-green.svg?logo=eslint&logoColor=white)](https://eslint.org/)
[![React Native](https://img.shields.io/badge/react--native-%3E%3D0.81.0-61dafb.svg?logo=react)](https://reactnative.dev/)
[![Platform: Android](https://img.shields.io/badge/platform-android-green.svg?logo=android&logoColor=white)](https://developer.android.com/)
[![Platform: iOS](https://img.shields.io/badge/platform-iOS-lightgrey.svg?logo=apple&logoColor=black)](https://developer.apple.com/ios/)

React-native wrapper for android & IOS google maps sdk

Expand All @@ -21,13 +22,15 @@ React-native wrapper for android & IOS google maps sdk
yarn add react-native-google-maps-plus react-native-nitro-modules
```

Dependencies
# Dependencies

This package builds on native SVG rendering libraries:
This package builds on native libraries for SVG rendering and Google Maps integration:

iOS: [SVGKit](https://github.com/SVGKit/SVGKit)

Android: [AndroidSVG](https://bigbadaboom.github.io/androidsvg/)
- **iOS**: [SVGKit](https://github.com/SVGKit/SVGKit)
- **Android**: [AndroidSVG](https://bigbadaboom.github.io/androidsvg/)
- **iOS Maps SDK**: [Google Maps SDK for iOS](https://developers.google.com/maps/documentation/ios-sdk)
- **Android Maps SDK**: [Google Maps SDK for Android](https://developers.google.com/maps/documentation/android-sdk)
- **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)

These are automatically linked when you install the package, but you may need to clean/rebuild your native projects after first install.

Expand Down
5 changes: 4 additions & 1 deletion RNGoogleMapsPlus.podspec
Original file line number Diff line number Diff line change
Expand Up @@ -21,10 +21,13 @@ Pod::Spec.new do |s|
"cpp/**/*.{hpp,cpp}",
]

s.resource_bundles = {'RNGoogleMapsPlusPrivacy' => ['Resources/PrivacyInfo.xcprivacy']}

s.dependency 'React-jsi'
s.dependency 'React-callinvoker'

s.dependency 'GoogleMaps', '10.3.0'
s.dependency 'GoogleMaps', '10.4.0'
s.dependency 'Google-Maps-iOS-Utils', '6.1.3'
s.dependency 'SVGKit', '3.0.0'

load 'nitrogen/generated/ios/RNGoogleMapsPlus+autolinking.rb'
Expand Down
Loading