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.
- package/GoogleMapsNitro.podspec +34 -0
- package/LICENSE +20 -0
- package/README.md +40 -0
- package/android/CMakeLists.txt +32 -0
- package/android/build.gradle +135 -0
- package/android/fix-prefab.gradle +51 -0
- package/android/gradle.properties +8 -0
- package/android/src/main/AndroidManifest.xml +2 -0
- package/android/src/main/cpp/cpp-adapter.cpp +6 -0
- package/android/src/main/java/com/googlemapsnitro/Color.kt +65 -0
- package/android/src/main/java/com/googlemapsnitro/GoogleMapsNitroPackage.kt +35 -0
- package/android/src/main/java/com/googlemapsnitro/GoogleMapsNitroViewImpl.kt +720 -0
- package/android/src/main/java/com/googlemapsnitro/HybridGoogleMapsNitroModule.kt +22 -0
- package/android/src/main/java/com/googlemapsnitro/HybridGoogleMapsNitroView.kt +337 -0
- package/android/src/main/java/com/googlemapsnitro/LocationHandler.kt +205 -0
- package/android/src/main/java/com/googlemapsnitro/MapMarker.kt +145 -0
- package/android/src/main/java/com/googlemapsnitro/MapPolygon.kt +36 -0
- package/android/src/main/java/com/googlemapsnitro/MapPolyline.kt +59 -0
- package/android/src/main/java/com/googlemapsnitro/PermissionHandler.kt +116 -0
- package/android/src/main/java/com/googlemapsnitro/PlayServicesHandler.kt +25 -0
- package/ios/Color.swift +109 -0
- package/ios/GoogleMapNitroViewImpl.swift +590 -0
- package/ios/HybridGoogleMapsNitroModule.swift +27 -0
- package/ios/HybridGoogleMapsNitroView.swift +348 -0
- package/ios/LocationHandler.swift +205 -0
- package/ios/MapHelper.swift +18 -0
- package/ios/MapMarker.swift +207 -0
- package/ios/MapPolygon.swift +55 -0
- package/ios/MapPolyline.swift +83 -0
- package/ios/PermissionHandler.swift +73 -0
- package/lib/module/GoogleMapsNitroModule.nitro.js +4 -0
- package/lib/module/GoogleMapsNitroModule.nitro.js.map +1 -0
- package/lib/module/GoogleMapsNitroView.nitro.js +4 -0
- package/lib/module/GoogleMapsNitroView.nitro.js.map +1 -0
- package/lib/module/index.js +8 -0
- package/lib/module/index.js.map +1 -0
- package/lib/module/package.json +1 -0
- package/lib/module/types.js +78 -0
- package/lib/module/types.js.map +1 -0
- package/lib/typescript/package.json +1 -0
- package/lib/typescript/src/GoogleMapsNitroModule.nitro.d.ts +12 -0
- package/lib/typescript/src/GoogleMapsNitroModule.nitro.d.ts.map +1 -0
- package/lib/typescript/src/GoogleMapsNitroView.nitro.d.ts +34 -0
- package/lib/typescript/src/GoogleMapsNitroView.nitro.d.ts.map +1 -0
- package/lib/typescript/src/index.d.ts +7 -0
- package/lib/typescript/src/index.d.ts.map +1 -0
- package/lib/typescript/src/types.d.ts +113 -0
- package/lib/typescript/src/types.d.ts.map +1 -0
- package/nitro.json +28 -0
- package/package.json +13 -3
- package/src/GoogleMapsNitroModule.nitro.ts +13 -0
- package/src/GoogleMapsNitroView.nitro.ts +78 -0
- package/src/index.tsx +24 -0
- 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 @@
|
|
|
1
|
+
{"version":3,"names":[],"sourceRoot":"../../src","sources":["GoogleMapsNitroModule.nitro.ts"],"mappings":"","ignoreList":[]}
|
|
@@ -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"}
|