react-native-google-maps-plus 0.1.0 → 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (54) hide show
  1. package/GoogleMapsNitro.podspec +34 -0
  2. package/LICENSE +20 -0
  3. package/README.md +40 -0
  4. package/android/CMakeLists.txt +32 -0
  5. package/android/build.gradle +135 -0
  6. package/android/fix-prefab.gradle +51 -0
  7. package/android/gradle.properties +8 -0
  8. package/android/src/main/AndroidManifest.xml +2 -0
  9. package/android/src/main/cpp/cpp-adapter.cpp +6 -0
  10. package/android/src/main/java/com/googlemapsnitro/Color.kt +65 -0
  11. package/android/src/main/java/com/googlemapsnitro/GoogleMapsNitroPackage.kt +35 -0
  12. package/android/src/main/java/com/googlemapsnitro/GoogleMapsNitroViewImpl.kt +720 -0
  13. package/android/src/main/java/com/googlemapsnitro/HybridGoogleMapsNitroModule.kt +22 -0
  14. package/android/src/main/java/com/googlemapsnitro/HybridGoogleMapsNitroView.kt +337 -0
  15. package/android/src/main/java/com/googlemapsnitro/LocationHandler.kt +205 -0
  16. package/android/src/main/java/com/googlemapsnitro/MapMarker.kt +145 -0
  17. package/android/src/main/java/com/googlemapsnitro/MapPolygon.kt +36 -0
  18. package/android/src/main/java/com/googlemapsnitro/MapPolyline.kt +59 -0
  19. package/android/src/main/java/com/googlemapsnitro/PermissionHandler.kt +116 -0
  20. package/android/src/main/java/com/googlemapsnitro/PlayServicesHandler.kt +25 -0
  21. package/ios/Color.swift +109 -0
  22. package/ios/GoogleMapNitroViewImpl.swift +590 -0
  23. package/ios/HybridGoogleMapsNitroModule.swift +27 -0
  24. package/ios/HybridGoogleMapsNitroView.swift +348 -0
  25. package/ios/LocationHandler.swift +205 -0
  26. package/ios/MapHelper.swift +18 -0
  27. package/ios/MapMarker.swift +207 -0
  28. package/ios/MapPolygon.swift +55 -0
  29. package/ios/MapPolyline.swift +83 -0
  30. package/ios/PermissionHandler.swift +73 -0
  31. package/lib/module/GoogleMapsNitroModule.nitro.js +4 -0
  32. package/lib/module/GoogleMapsNitroModule.nitro.js.map +1 -0
  33. package/lib/module/GoogleMapsNitroView.nitro.js +4 -0
  34. package/lib/module/GoogleMapsNitroView.nitro.js.map +1 -0
  35. package/lib/module/index.js +8 -0
  36. package/lib/module/index.js.map +1 -0
  37. package/lib/module/package.json +1 -0
  38. package/lib/module/types.js +78 -0
  39. package/lib/module/types.js.map +1 -0
  40. package/lib/typescript/package.json +1 -0
  41. package/lib/typescript/src/GoogleMapsNitroModule.nitro.d.ts +12 -0
  42. package/lib/typescript/src/GoogleMapsNitroModule.nitro.d.ts.map +1 -0
  43. package/lib/typescript/src/GoogleMapsNitroView.nitro.d.ts +34 -0
  44. package/lib/typescript/src/GoogleMapsNitroView.nitro.d.ts.map +1 -0
  45. package/lib/typescript/src/index.d.ts +7 -0
  46. package/lib/typescript/src/index.d.ts.map +1 -0
  47. package/lib/typescript/src/types.d.ts +113 -0
  48. package/lib/typescript/src/types.d.ts.map +1 -0
  49. package/nitro.json +28 -0
  50. package/package.json +13 -3
  51. package/src/GoogleMapsNitroModule.nitro.ts +13 -0
  52. package/src/GoogleMapsNitroView.nitro.ts +78 -0
  53. package/src/index.tsx +24 -0
  54. package/src/types.ts +174 -0
@@ -0,0 +1,207 @@
1
+ import GoogleMaps
2
+ import SVGKit
3
+ import UIKit
4
+
5
+ final class MapMarkerOptions {
6
+ private let iconCache = NSCache<NSString, UIImage>()
7
+ private var tasks: [String: Task<Void, Never>] = [:]
8
+ private let queue = DispatchQueue(
9
+ label: "map.marker.render",
10
+ qos: .userInitiated,
11
+ attributes: .concurrent
12
+ )
13
+
14
+ func build(_ m: RNMarker, icon: UIImage) -> GMSMarker {
15
+ let marker = GMSMarker(
16
+ position: CLLocationCoordinate2D(
17
+ latitude: m.coordinate.latitude,
18
+ longitude: m.coordinate.longitude
19
+ )
20
+ )
21
+ marker.zIndex = Int32(m.zIndex)
22
+ marker.userData = m.id
23
+ marker.tracksViewChanges = true
24
+ marker.icon = icon
25
+ marker.groundAnchor = CGPoint(
26
+ x: m.anchor?.x ?? 0.5,
27
+ y: m.anchor?.y ?? 0.5
28
+ )
29
+ DispatchQueue.main.asyncAfter(deadline: .now() + 0.25) { [weak marker] in
30
+ marker?.tracksViewChanges = false
31
+ }
32
+ return marker
33
+ }
34
+
35
+ @MainActor
36
+ func buildIconAsync(
37
+ _ id: String,
38
+ _ m: RNMarker,
39
+ onReady: @escaping (UIImage?) -> Void
40
+ ) {
41
+ tasks[id]?.cancel()
42
+
43
+ let key = m.styleHash()
44
+ if let cached = iconCache.object(forKey: key) {
45
+ onReady(cached)
46
+ return
47
+ }
48
+
49
+ let task = Task(priority: .userInitiated) { [weak self] in
50
+ guard let self else { return }
51
+ defer {
52
+ self.tasks.removeValue(forKey: id)
53
+ }
54
+
55
+ let img = await self.renderUIImage(m)
56
+ guard let img, !Task.isCancelled else {
57
+ return
58
+ }
59
+
60
+ self.iconCache.setObject(img, forKey: key)
61
+
62
+ await MainActor.run {
63
+ guard !Task.isCancelled else { return }
64
+ onReady(img)
65
+ }
66
+
67
+ }
68
+
69
+ tasks[id] = task
70
+ }
71
+
72
+ @MainActor
73
+ func updateMarker(_ prev: RNMarker, _ next: RNMarker, _ m: GMSMarker) {
74
+ if prev.coordinate.latitude != next.coordinate.latitude
75
+ || prev.coordinate.longitude != next.coordinate.longitude {
76
+ m.position = CLLocationCoordinate2D(
77
+ latitude: next.coordinate.latitude,
78
+ longitude: next.coordinate.longitude
79
+ )
80
+ }
81
+
82
+ if prev.zIndex != next.zIndex {
83
+ m.zIndex = Int32(next.zIndex)
84
+ }
85
+
86
+ if prev.anchor?.x != next.anchor?.x || prev.anchor?.y != next.anchor?.y {
87
+ m.groundAnchor = CGPoint(
88
+ x: next.anchor?.x ?? 0.5,
89
+ y: next.anchor?.y ?? 0.5
90
+ )
91
+ }
92
+
93
+ if !prev.markerStyleEquals(next) {
94
+ buildIconAsync(next.id, next) { img in
95
+ guard let img else { return }
96
+ m.tracksViewChanges = true
97
+ m.icon = img
98
+ if prev.anchor?.x != next.anchor?.x || prev.anchor?.y != next.anchor?.y {
99
+ m.groundAnchor = CGPoint(
100
+ x: next.anchor?.x ?? 0.5,
101
+ y: next.anchor?.y ?? 0.5
102
+ )
103
+ }
104
+
105
+ DispatchQueue.main.asyncAfter(deadline: .now() + 0.25) { [weak m] in
106
+ m?.tracksViewChanges = false
107
+ }
108
+ }
109
+ }
110
+ }
111
+
112
+ func cancelIconTask(_ id: String) {
113
+ tasks[id]?.cancel()
114
+ tasks.removeValue(forKey: id)
115
+ }
116
+
117
+ func cancelAllIconTasks() {
118
+ let ids = Array(tasks.keys)
119
+ for id in ids {
120
+ tasks[id]?.cancel()
121
+ }
122
+ tasks.removeAll()
123
+ iconCache.removeAllObjects()
124
+ }
125
+
126
+ private func renderUIImage(_ m: RNMarker) async -> UIImage? {
127
+ await withTaskCancellationHandler(
128
+ operation: {
129
+ await withCheckedContinuation { cont in
130
+ queue.async {
131
+ if Task.isCancelled {
132
+ cont.resume(returning: nil)
133
+ return
134
+ }
135
+
136
+ let targetW = max(1, Int(CGFloat(m.width)))
137
+ let targetH = max(1, Int(CGFloat(m.height)))
138
+ let size = CGSize(width: targetW, height: targetH)
139
+
140
+ guard
141
+ let data = m.iconSvg.data(using: .utf8),
142
+ let svgImg = SVGKImage(data: data)
143
+ else {
144
+ cont.resume(returning: nil)
145
+ return
146
+ }
147
+
148
+ svgImg.size = size
149
+
150
+ if Task.isCancelled {
151
+ cont.resume(returning: nil)
152
+ return
153
+ }
154
+
155
+ guard let base = svgImg.uiImage else {
156
+ cont.resume(returning: nil)
157
+ return
158
+ }
159
+
160
+ let scale = UIScreen.main.scale
161
+ let img: UIImage
162
+ if let cg = base.cgImage {
163
+ img = UIImage(cgImage: cg, scale: scale, orientation: .up)
164
+ } else {
165
+ let fmt = UIGraphicsImageRendererFormat.default()
166
+ fmt.opaque = false
167
+ fmt.scale = scale
168
+ let renderer = UIGraphicsImageRenderer(size: size, format: fmt)
169
+ img = renderer.image { _ in
170
+ base.draw(in: CGRect(origin: .zero, size: size))
171
+ }
172
+ }
173
+
174
+ cont.resume(returning: img)
175
+ }
176
+ }
177
+
178
+ },
179
+ onCancel: {}
180
+ )
181
+ }
182
+
183
+ }
184
+
185
+ extension RNMarker {
186
+ func markerEquals(_ b: RNMarker) -> Bool {
187
+ id == b.id && zIndex == b.zIndex
188
+ && coordinate.latitude == b.coordinate.latitude
189
+ && coordinate.longitude == b.coordinate.longitude
190
+ && anchor?.x == b.anchor?.x && anchor?.y == b.anchor?.y
191
+ && markerStyleEquals(b)
192
+ }
193
+
194
+ func markerStyleEquals(_ b: RNMarker) -> Bool {
195
+ width == b.width && height == b.height
196
+ && iconSvg == b.iconSvg
197
+ }
198
+
199
+ func styleHash() -> NSString {
200
+ var hasher = Hasher()
201
+ hasher.combine(width)
202
+ hasher.combine(height)
203
+ hasher.combine(iconSvg)
204
+ return String(hasher.finalize()) as NSString
205
+ }
206
+
207
+ }
@@ -0,0 +1,55 @@
1
+ import GoogleMaps
2
+
3
+ class MapPolygonOptions {
4
+
5
+ func buildPolygon(_ p: RNPolygon) -> GMSPolygon {
6
+ let path = GMSMutablePath()
7
+ p.coordinates.forEach {
8
+ path.add(
9
+ CLLocationCoordinate2D(latitude: $0.latitude, longitude: $0.longitude)
10
+ )
11
+ }
12
+ let pg = GMSPolygon(path: path)
13
+ if let fc = p.fillColor?.toUIColor() { pg.fillColor = fc }
14
+ if let sc = p.strokeColor?.toUIColor() { pg.strokeColor = sc }
15
+ if let sw = p.strokeWidth { pg.strokeWidth = CGFloat(sw) }
16
+ pg.zIndex = Int32(p.zIndex)
17
+ return pg
18
+ }
19
+ }
20
+
21
+ extension RNPolygon {
22
+ func updatePolygon(_ next: RNPolygon, _ pg: GMSPolygon) {
23
+ let path = GMSMutablePath()
24
+ next.coordinates.forEach {
25
+ path.add(
26
+ CLLocationCoordinate2D(
27
+ latitude: $0.latitude,
28
+ longitude: $0.longitude
29
+ )
30
+ )
31
+ }
32
+ pg.path = path
33
+
34
+ if let fc = next.fillColor?.toUIColor() { pg.fillColor = fc }
35
+ if let sc = next.strokeColor?.toUIColor() { pg.strokeColor = sc }
36
+ if let sw = next.strokeWidth { pg.strokeWidth = CGFloat(sw) }
37
+ pg.zIndex = Int32(next.zIndex)
38
+ }
39
+
40
+ func polygonEquals(_ b: RNPolygon) -> Bool {
41
+ guard zIndex == b.zIndex,
42
+ strokeWidth == b.strokeWidth,
43
+ fillColor == b.fillColor,
44
+ strokeColor == b.strokeColor,
45
+ coordinates.count == b.coordinates.count
46
+ else { return false }
47
+ for i in 0..<coordinates.count {
48
+ if coordinates[i].latitude != b.coordinates[i].latitude
49
+ || coordinates[i].longitude != b.coordinates[i].longitude {
50
+ return false
51
+ }
52
+ }
53
+ return true
54
+ }
55
+ }
@@ -0,0 +1,83 @@
1
+ import GoogleMaps
2
+
3
+ class MapPolylineOptions {
4
+ func buildPolyline(_ p: RNPolyline) -> GMSPolyline {
5
+ let path = GMSMutablePath()
6
+ p.coordinates.forEach {
7
+ path.add(
8
+ CLLocationCoordinate2D(latitude: $0.latitude, longitude: $0.longitude)
9
+ )
10
+ }
11
+ let pl = GMSPolyline(path: path)
12
+ if let w = p.width { pl.strokeWidth = CGFloat(w) }
13
+ if let c = p.color?.toUIColor() { pl.strokeColor = c }
14
+ pl.zIndex = Int32(p.zIndex)
15
+ if let cap = p.lineCap {
16
+ /// pl.lineCap = mapLineCap(cap)
17
+ }
18
+ if let join = p.lineJoin {
19
+ /// pl.strokeJoin = mapLineJoin(join)
20
+ }
21
+ return pl
22
+ }
23
+ }
24
+
25
+ func mapLineCap(_ t: RNLineCapType?) -> CGLineCap {
26
+ switch t {
27
+ case .round: return .round
28
+ case .square: return .square
29
+ default: return .butt
30
+ }
31
+ }
32
+
33
+ func mapLineJoin(_ t: RNLineJoinType?) -> CGLineJoin {
34
+ switch t {
35
+ case .round: return .round
36
+ case .bevel: return .bevel
37
+ default: return .miter
38
+ }
39
+ }
40
+
41
+ extension RNPolyline {
42
+ func updatePolyline(_ next: RNPolyline, _ pl: GMSPolyline) {
43
+ let path = GMSMutablePath()
44
+ next.coordinates.forEach {
45
+ path.add(
46
+ CLLocationCoordinate2D(
47
+ latitude: $0.latitude,
48
+ longitude: $0.longitude
49
+ )
50
+ )
51
+ }
52
+ pl.path = path
53
+ if let w = next.width { pl.strokeWidth = CGFloat(w) }
54
+ if let cap = next.lineCap {
55
+ pl.spans = nil
56
+ /// gms.lineCap = mapLineCap(cap)
57
+ }
58
+ if let join = next.lineJoin {
59
+ /// gms.strokeJoin = mapLineJoin(join)
60
+ }
61
+ if let c = next.color?.toUIColor() {
62
+ pl.strokeColor = c
63
+ }
64
+ pl.zIndex = Int32(next.zIndex)
65
+ }
66
+
67
+ func polylineEquals(_ b: RNPolyline) -> Bool {
68
+ guard zIndex == b.zIndex,
69
+ (width ?? 0) == (b.width ?? 0),
70
+ lineCap == b.lineCap,
71
+ lineJoin == b.lineJoin,
72
+ color == b.color,
73
+ coordinates.count == b.coordinates.count
74
+ else { return false }
75
+ for i in 0..<coordinates.count {
76
+ if coordinates[i].latitude != b.coordinates[i].latitude
77
+ || coordinates[i].longitude != b.coordinates[i].longitude {
78
+ return false
79
+ }
80
+ }
81
+ return true
82
+ }
83
+ }
@@ -0,0 +1,73 @@
1
+ import CoreLocation
2
+ import Foundation
3
+ import NitroModules
4
+ import UIKit
5
+
6
+ final class PermissionHandler: NSObject, CLLocationManagerDelegate {
7
+ private let manager = CLLocationManager()
8
+ private var pendingPromises:
9
+ [NitroModules.Promise<RNLocationPermissionResult>] = []
10
+
11
+ override init() {
12
+ super.init()
13
+ manager.delegate = self
14
+ }
15
+
16
+ func requestLocationPermission()
17
+ -> NitroModules.Promise<RNLocationPermissionResult> {
18
+ let promise = NitroModules.Promise<RNLocationPermissionResult>()
19
+
20
+ let status = manager.authorizationStatus
21
+ switch status {
22
+ case .authorizedAlways, .authorizedWhenInUse:
23
+ promise.resolve(
24
+ withResult: RNLocationPermissionResult(
25
+ android: nil,
26
+ ios: RNIOSPermissionResult.authorized
27
+ )
28
+ )
29
+ return promise
30
+ case .denied, .restricted:
31
+ promise.resolve(
32
+ withResult: RNLocationPermissionResult(
33
+ android: nil,
34
+ ios: RNIOSPermissionResult.denied
35
+ )
36
+ )
37
+ return promise
38
+ case .notDetermined:
39
+ break
40
+ @unknown default:
41
+ break
42
+ }
43
+
44
+ pendingPromises.append(promise)
45
+ manager.requestWhenInUseAuthorization()
46
+
47
+ return promise
48
+ }
49
+
50
+ func locationManagerDidChangeAuthorization(_ manager: CLLocationManager) {
51
+ guard !pendingPromises.isEmpty else { return }
52
+
53
+ let status: RNIOSPermissionResult
54
+ switch manager.authorizationStatus {
55
+ case .authorizedWhenInUse, .authorizedAlways:
56
+ status = RNIOSPermissionResult.authorized
57
+ case .denied, .restricted:
58
+ status = RNIOSPermissionResult.denied
59
+ case .notDetermined:
60
+ return
61
+ @unknown default:
62
+ status = RNIOSPermissionResult.denied
63
+ }
64
+
65
+ let promises = pendingPromises
66
+ pendingPromises.removeAll()
67
+ promises.forEach {
68
+ $0.resolve(
69
+ withResult: RNLocationPermissionResult(android: nil, ios: status)
70
+ )
71
+ }
72
+ }
73
+ }
@@ -0,0 +1,4 @@
1
+ "use strict";
2
+
3
+ export {};
4
+ //# sourceMappingURL=GoogleMapsNitroModule.nitro.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":[],"sourceRoot":"../../src","sources":["GoogleMapsNitroModule.nitro.ts"],"mappings":"","ignoreList":[]}
@@ -0,0 +1,4 @@
1
+ "use strict";
2
+
3
+ export {};
4
+ //# sourceMappingURL=GoogleMapsNitroView.nitro.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":[],"sourceRoot":"../../src","sources":["GoogleMapsNitroView.nitro.ts"],"mappings":"","ignoreList":[]}
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+
3
+ import { getHostComponent, NitroModules } from 'react-native-nitro-modules';
4
+ const GoogleMapsNitroConfig = require('../nitrogen/generated/shared/json/GoogleMapsNitroViewConfig.json');
5
+ export * from "./types.js";
6
+ export const GoogleMapsView = getHostComponent('GoogleMapsNitroView', () => GoogleMapsNitroConfig);
7
+ export const GoogleMapsModule = NitroModules.createHybridObject('GoogleMapsNitroModule');
8
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["getHostComponent","NitroModules","GoogleMapsNitroConfig","require","GoogleMapsView","GoogleMapsModule","createHybridObject"],"sourceRoot":"../../src","sources":["index.tsx"],"mappings":";;AAAA,SAASA,gBAAgB,EAAEC,YAAY,QAAQ,4BAA4B;AAE3E,MAAMC,qBAAqB,GAAGC,OAAO,CAAC,kEAAkE,CAAC;AASzG,cAAc,YAAS;AAIvB,OAAO,MAAMC,cAAc,GAAGJ,gBAAgB,CAG5C,qBAAqB,EAAE,MAAME,qBAAqB,CAAC;AAErD,OAAO,MAAMG,gBAAgB,GAC3BJ,YAAY,CAACK,kBAAkB,CAC7B,uBACF,CAAC","ignoreList":[]}
@@ -0,0 +1 @@
1
+ {"type":"module"}
@@ -0,0 +1,78 @@
1
+ "use strict";
2
+
3
+ /*
4
+ | 'administrative'
5
+ | 'administrative.country'
6
+ | 'administrative.land_parcel'
7
+ | 'administrative.locality'
8
+ | 'administrative.neighborhood'
9
+ | 'administrative.province'
10
+ | 'landscape'
11
+ | 'landscape.man_made'
12
+ | 'landscape.natural'
13
+ | 'poi'
14
+ | 'poi.attraction'
15
+ | 'poi.business'
16
+ | 'poi.government'
17
+ | 'poi.medical'
18
+ | 'poi.park'
19
+ | 'poi.place_of_worship'
20
+ | 'poi.school'
21
+ | 'poi.sports_complex'
22
+ | 'road'
23
+ | 'road.arterial'
24
+ | 'road.highway'
25
+ | 'road.local'
26
+ | 'transit'
27
+ | 'transit.line'
28
+ | 'transit.station'
29
+ | 'water';
30
+ */
31
+
32
+ /*
33
+ | 'all'
34
+ | 'geometry'
35
+ | 'geometry.fill'
36
+ | 'geometry.stroke'
37
+ | 'labels'
38
+ | 'labels.icon'
39
+ | 'labels.text'
40
+ | 'labels.text.fill'
41
+ | 'labels.text.stroke'
42
+ */
43
+
44
+ /*
45
+ 'on' | 'off' | 'simplified';
46
+ */
47
+
48
+ export let RNAndroidLocationPermissionResult = /*#__PURE__*/function (RNAndroidLocationPermissionResult) {
49
+ RNAndroidLocationPermissionResult[RNAndroidLocationPermissionResult["GRANTED"] = 1] = "GRANTED";
50
+ RNAndroidLocationPermissionResult[RNAndroidLocationPermissionResult["DENIED"] = -1] = "DENIED";
51
+ RNAndroidLocationPermissionResult[RNAndroidLocationPermissionResult["NEVER_ASK_AGAIN"] = -2] = "NEVER_ASK_AGAIN";
52
+ return RNAndroidLocationPermissionResult;
53
+ }({});
54
+ export let RNIOSPermissionResult = /*#__PURE__*/function (RNIOSPermissionResult) {
55
+ RNIOSPermissionResult[RNIOSPermissionResult["DENIED"] = -1] = "DENIED";
56
+ RNIOSPermissionResult[RNIOSPermissionResult["AUTHORIZED"] = 1] = "AUTHORIZED";
57
+ return RNIOSPermissionResult;
58
+ }({});
59
+ export let RNLocationErrorCode = /*#__PURE__*/function (RNLocationErrorCode) {
60
+ RNLocationErrorCode[RNLocationErrorCode["PERMISSION_DENIED"] = 1] = "PERMISSION_DENIED";
61
+ RNLocationErrorCode[RNLocationErrorCode["POSITION_UNAVAILABLE"] = 2] = "POSITION_UNAVAILABLE";
62
+ RNLocationErrorCode[RNLocationErrorCode["TIMEOUT"] = 3] = "TIMEOUT";
63
+ RNLocationErrorCode[RNLocationErrorCode["PLAY_SERVICE_NOT_AVAILABLE"] = 4] = "PLAY_SERVICE_NOT_AVAILABLE";
64
+ RNLocationErrorCode[RNLocationErrorCode["SETTINGS_NOT_SATISFIED"] = 5] = "SETTINGS_NOT_SATISFIED";
65
+ RNLocationErrorCode[RNLocationErrorCode["INTERNAL_ERROR"] = -1] = "INTERNAL_ERROR";
66
+ return RNLocationErrorCode;
67
+ }({});
68
+ export let RNMapErrorCode = /*#__PURE__*/function (RNMapErrorCode) {
69
+ RNMapErrorCode[RNMapErrorCode["PLAY_SERVICES_MISSING"] = 0] = "PLAY_SERVICES_MISSING";
70
+ RNMapErrorCode[RNMapErrorCode["PLAY_SERVICES_INVALID"] = 1] = "PLAY_SERVICES_INVALID";
71
+ RNMapErrorCode[RNMapErrorCode["PLAY_SERVICES_DISABLED"] = 2] = "PLAY_SERVICES_DISABLED";
72
+ RNMapErrorCode[RNMapErrorCode["PLAY_SERVICES_OUTDATED"] = 3] = "PLAY_SERVICES_OUTDATED";
73
+ RNMapErrorCode[RNMapErrorCode["PLAY_SERVICE_UPDATE_AVAILABLE"] = 4] = "PLAY_SERVICE_UPDATE_AVAILABLE";
74
+ RNMapErrorCode[RNMapErrorCode["PLAY_SERVICE_UPDATING"] = 5] = "PLAY_SERVICE_UPDATING";
75
+ RNMapErrorCode[RNMapErrorCode["UNKNOWN"] = 6] = "UNKNOWN";
76
+ return RNMapErrorCode;
77
+ }({});
78
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["RNAndroidLocationPermissionResult","RNIOSPermissionResult","RNLocationErrorCode","RNMapErrorCode"],"sourceRoot":"../../src","sources":["types.ts"],"mappings":";;AAoBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAIA;AACA;AACA;;AAyEA,WAAYA,iCAAiC,0BAAjCA,iCAAiC;EAAjCA,iCAAiC,CAAjCA,iCAAiC;EAAjCA,iCAAiC,CAAjCA,iCAAiC;EAAjCA,iCAAiC,CAAjCA,iCAAiC;EAAA,OAAjCA,iCAAiC;AAAA;AAM7C,WAAYC,qBAAqB,0BAArBA,qBAAqB;EAArBA,qBAAqB,CAArBA,qBAAqB;EAArBA,qBAAqB,CAArBA,qBAAqB;EAAA,OAArBA,qBAAqB;AAAA;AAUjC,WAAYC,mBAAmB,0BAAnBA,mBAAmB;EAAnBA,mBAAmB,CAAnBA,mBAAmB;EAAnBA,mBAAmB,CAAnBA,mBAAmB;EAAnBA,mBAAmB,CAAnBA,mBAAmB;EAAnBA,mBAAmB,CAAnBA,mBAAmB;EAAnBA,mBAAmB,CAAnBA,mBAAmB;EAAnBA,mBAAmB,CAAnBA,mBAAmB;EAAA,OAAnBA,mBAAmB;AAAA;AAS/B,WAAYC,cAAc,0BAAdA,cAAc;EAAdA,cAAc,CAAdA,cAAc;EAAdA,cAAc,CAAdA,cAAc;EAAdA,cAAc,CAAdA,cAAc;EAAdA,cAAc,CAAdA,cAAc;EAAdA,cAAc,CAAdA,cAAc;EAAdA,cAAc,CAAdA,cAAc;EAAdA,cAAc,CAAdA,cAAc;EAAA,OAAdA,cAAc;AAAA","ignoreList":[]}
@@ -0,0 +1 @@
1
+ {"type":"module"}
@@ -0,0 +1,12 @@
1
+ import { type HybridObject } from 'react-native-nitro-modules';
2
+ import type { RNLocationPermissionResult } from './types';
3
+ export interface GoogleMapsNitroModule extends HybridObject<{
4
+ ios: 'swift';
5
+ android: 'kotlin';
6
+ }> {
7
+ showLocationDialog(): void;
8
+ openLocationSettings(): void;
9
+ requestLocationPermission(): Promise<RNLocationPermissionResult>;
10
+ isGooglePlayServicesAvailable(): boolean;
11
+ }
12
+ //# sourceMappingURL=GoogleMapsNitroModule.nitro.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GoogleMapsNitroModule.nitro.d.ts","sourceRoot":"","sources":["../../../src/GoogleMapsNitroModule.nitro.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC/D,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,SAAS,CAAC;AAE1D,MAAM,WAAW,qBACf,SAAQ,YAAY,CAAC;IAAE,GAAG,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,QAAQ,CAAA;CAAE,CAAC;IACzD,kBAAkB,IAAI,IAAI,CAAC;IAE3B,oBAAoB,IAAI,IAAI,CAAC;IAE7B,yBAAyB,IAAI,OAAO,CAAC,0BAA0B,CAAC,CAAC;IAEjE,6BAA6B,IAAI,OAAO,CAAC;CAC1C"}
@@ -0,0 +1,34 @@
1
+ import type { HybridView, HybridViewMethods, HybridViewProps } from 'react-native-nitro-modules';
2
+ import type { RNCamera, RNLatLng, RNMapPadding, RNPolygon, RNPolyline, RNUserInterfaceStyle, RNLocationErrorCode, RNMarker, RNLocationPermissionResult, RNRegion, RNLocation, RNMapErrorCode } from './types';
3
+ export interface GoogleMapsNitroViewProps extends HybridViewProps {
4
+ buildingEnabled: boolean;
5
+ trafficEnabled: boolean;
6
+ customMapStyle: string;
7
+ initialCamera: RNCamera;
8
+ userInterfaceStyle: RNUserInterfaceStyle;
9
+ minZoomLevel: number;
10
+ maxZoomLevel: number;
11
+ mapPadding: RNMapPadding;
12
+ markers: RNMarker[];
13
+ polygons: RNPolygon[];
14
+ polylines: RNPolyline[];
15
+ onMapError?: (error: RNMapErrorCode) => void;
16
+ onMapReady?: (ready: boolean) => void;
17
+ onLocationUpdate?: (location: RNLocation) => void;
18
+ onLocationError?: (error: RNLocationErrorCode) => void;
19
+ onMapPress?: (coordinate: RNLatLng) => void;
20
+ onMarkerPress?: (id: string) => void;
21
+ onCameraChangeStart?: (region: RNRegion, camera: RNCamera, isGesture: boolean) => void;
22
+ onCameraChange?: (region: RNRegion, camera: RNCamera, isGesture: boolean) => void;
23
+ onCameraChangeComplete?: (region: RNRegion, camera: RNCamera, isGesture: boolean) => void;
24
+ }
25
+ export interface GoogleMapsNitroViewMethods extends HybridViewMethods {
26
+ setCamera(camera: RNCamera, animated?: boolean, durationMS?: number): void;
27
+ setCameraToCoordinates(coordinates: RNLatLng[], padding?: RNMapPadding, animated?: boolean, durationMS?: number): void;
28
+ showLocationDialog(): void;
29
+ openLocationSettings(): void;
30
+ requestLocationPermission(): Promise<RNLocationPermissionResult>;
31
+ isGooglePlayServicesAvailable(): boolean;
32
+ }
33
+ export type GoogleMapsNitroView = HybridView<GoogleMapsNitroViewProps, GoogleMapsNitroViewMethods>;
34
+ //# sourceMappingURL=GoogleMapsNitroView.nitro.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GoogleMapsNitroView.nitro.d.ts","sourceRoot":"","sources":["../../../src/GoogleMapsNitroView.nitro.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,UAAU,EACV,iBAAiB,EACjB,eAAe,EAChB,MAAM,4BAA4B,CAAC;AACpC,OAAO,KAAK,EACV,QAAQ,EACR,QAAQ,EACR,YAAY,EACZ,SAAS,EACT,UAAU,EACV,oBAAoB,EACpB,mBAAmB,EACnB,QAAQ,EACR,0BAA0B,EAC1B,QAAQ,EACR,UAAU,EACV,cAAc,EACf,MAAM,SAAS,CAAC;AAEjB,MAAM,WAAW,wBAAyB,SAAQ,eAAe;IAC/D,eAAe,EAAE,OAAO,CAAC;IACzB,cAAc,EAAE,OAAO,CAAC;IACxB,cAAc,EAAE,MAAM,CAAC;IACvB,aAAa,EAAE,QAAQ,CAAC;IACxB,kBAAkB,EAAE,oBAAoB,CAAC;IACzC,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,YAAY,CAAC;IACzB,OAAO,EAAE,QAAQ,EAAE,CAAC;IACpB,QAAQ,EAAE,SAAS,EAAE,CAAC;IACtB,SAAS,EAAE,UAAU,EAAE,CAAC;IACxB,UAAU,CAAC,EAAE,CAAC,KAAK,EAAE,cAAc,KAAK,IAAI,CAAC;IAC7C,UAAU,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;IACtC,gBAAgB,CAAC,EAAE,CAAC,QAAQ,EAAE,UAAU,KAAK,IAAI,CAAC;IAClD,eAAe,CAAC,EAAE,CAAC,KAAK,EAAE,mBAAmB,KAAK,IAAI,CAAC;IACvD,UAAU,CAAC,EAAE,CAAC,UAAU,EAAE,QAAQ,KAAK,IAAI,CAAC;IAC5C,aAAa,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IACrC,mBAAmB,CAAC,EAAE,CACpB,MAAM,EAAE,QAAQ,EAChB,MAAM,EAAE,QAAQ,EAChB,SAAS,EAAE,OAAO,KACf,IAAI,CAAC;IACV,cAAc,CAAC,EAAE,CACf,MAAM,EAAE,QAAQ,EAChB,MAAM,EAAE,QAAQ,EAChB,SAAS,EAAE,OAAO,KACf,IAAI,CAAC;IACV,sBAAsB,CAAC,EAAE,CACvB,MAAM,EAAE,QAAQ,EAChB,MAAM,EAAE,QAAQ,EAChB,SAAS,EAAE,OAAO,KACf,IAAI,CAAC;CACX;AAED,MAAM,WAAW,0BAA2B,SAAQ,iBAAiB;IACnE,SAAS,CAAC,MAAM,EAAE,QAAQ,EAAE,QAAQ,CAAC,EAAE,OAAO,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAE3E,sBAAsB,CACpB,WAAW,EAAE,QAAQ,EAAE,EACvB,OAAO,CAAC,EAAE,YAAY,EACtB,QAAQ,CAAC,EAAE,OAAO,EAClB,UAAU,CAAC,EAAE,MAAM,GAClB,IAAI,CAAC;IAER,kBAAkB,IAAI,IAAI,CAAC;IAE3B,oBAAoB,IAAI,IAAI,CAAC;IAE7B,yBAAyB,IAAI,OAAO,CAAC,0BAA0B,CAAC,CAAC;IAEjE,6BAA6B,IAAI,OAAO,CAAC;CAC1C;AAED,MAAM,MAAM,mBAAmB,GAAG,UAAU,CAC1C,wBAAwB,EACxB,0BAA0B,CAC3B,CAAC"}
@@ -0,0 +1,7 @@
1
+ import type { GoogleMapsNitroViewMethods, GoogleMapsNitroViewProps } from './GoogleMapsNitroView.nitro';
2
+ import type { GoogleMapsNitroModule } from './GoogleMapsNitroModule.nitro';
3
+ export * from './types';
4
+ export type { GoogleMapsNitroViewMethods, GoogleMapsNitroViewProps };
5
+ export declare const GoogleMapsView: import("react-native-nitro-modules").ReactNativeView<GoogleMapsNitroViewProps, GoogleMapsNitroViewMethods>;
6
+ export declare const GoogleMapsModule: GoogleMapsNitroModule;
7
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/index.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,EACV,0BAA0B,EAC1B,wBAAwB,EACzB,MAAM,6BAA6B,CAAC;AAErC,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,+BAA+B,CAAC;AAE3E,cAAc,SAAS,CAAC;AAExB,YAAY,EAAE,0BAA0B,EAAE,wBAAwB,EAAE,CAAC;AAErE,eAAO,MAAM,cAAc,4GAG0B,CAAC;AAEtD,eAAO,MAAM,gBAAgB,uBAG1B,CAAC"}