react-native-google-maps-plus 1.7.0-dev.9 → 1.8.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/android/build.gradle +1 -1
- package/android/gradle.properties +2 -1
- package/android/src/main/java/com/rngooglemapsplus/GoogleMapsViewImpl.kt +120 -124
- package/android/src/main/java/com/rngooglemapsplus/MapCircleBuilder.kt +2 -3
- package/android/src/main/java/com/rngooglemapsplus/MapMarkerBuilder.kt +83 -53
- package/android/src/main/java/com/rngooglemapsplus/MapPolygonBuilder.kt +6 -23
- package/android/src/main/java/com/rngooglemapsplus/MapPolylineBuilder.kt.kt +12 -39
- package/android/src/main/java/com/rngooglemapsplus/RNGoogleMapsPlusView.kt +30 -12
- package/android/src/main/java/com/rngooglemapsplus/extensions/BitmapExtension.kt +35 -0
- package/android/src/main/java/com/rngooglemapsplus/extensions/LatLngBoundsExtension.kt +31 -0
- package/android/src/main/java/com/rngooglemapsplus/extensions/MapObjectTagExtensions.kt +84 -0
- package/android/src/main/java/com/rngooglemapsplus/extensions/RNLineCapTypeExtension.kt +14 -0
- package/android/src/main/java/com/rngooglemapsplus/extensions/RNLineJoinTypeExtension.kt +12 -0
- package/android/src/main/java/com/rngooglemapsplus/extensions/RNMapCircleExtension.kt +7 -1
- package/android/src/main/java/com/rngooglemapsplus/extensions/RNMarkerExtension.kt +54 -17
- package/android/src/main/java/com/rngooglemapsplus/extensions/RNPolygonExtension.kt +31 -1
- package/android/src/main/java/com/rngooglemapsplus/extensions/RNPolylineExtension.kt +6 -1
- package/ios/GoogleMapViewImpl.swift +81 -64
- package/ios/MapCircleBuilder.swift +2 -3
- package/ios/MapMarkerBuilder.swift +106 -50
- package/ios/MapPolygonBuilder.swift +6 -41
- package/ios/MapPolylineBuilder.swift +2 -10
- package/ios/RNGoogleMapsPlusView.swift +24 -11
- package/ios/extensions/MapObjectTag+Extension.swift +93 -0
- package/ios/extensions/RNCircle+Extension.swift +14 -5
- package/ios/extensions/RNLatLng+Extension.swift +11 -0
- package/ios/extensions/RNLineCapType+Extension.swift +10 -0
- package/ios/extensions/RNLineJoinType+Extension.swift +11 -0
- package/ios/extensions/RNMarker+Extension.swift +43 -12
- package/ios/extensions/RNPolygon+Extension.swift.swift +50 -21
- package/ios/extensions/RNPolyline+Extension.swift.swift +15 -26
- package/ios/extensions/UIImage+Extension.swift +45 -0
- package/lib/module/types.js.map +1 -1
- package/lib/typescript/src/RNGoogleMapsPlusView.nitro.d.ts +12 -10
- package/lib/typescript/src/RNGoogleMapsPlusView.nitro.d.ts.map +1 -1
- package/lib/typescript/src/types.d.ts +2 -1
- package/lib/typescript/src/types.d.ts.map +1 -1
- package/nitrogen/generated/android/RNGoogleMapsPlusOnLoad.cpp +4 -4
- package/nitrogen/generated/android/c++/JFunc_void_std__string.hpp +75 -0
- package/nitrogen/generated/android/c++/JFunc_void_std__string_RNLatLng.hpp +77 -0
- package/nitrogen/generated/android/c++/JHybridRNGoogleMapsPlusViewSpec.cpp +100 -92
- package/nitrogen/generated/android/c++/JHybridRNGoogleMapsPlusViewSpec.hpp +22 -20
- package/nitrogen/generated/android/c++/JRNInitialProps.hpp +7 -3
- package/nitrogen/generated/android/c++/JRNMarker.hpp +7 -7
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/rngooglemapsplus/{Func_void_std__optional_std__string_.kt → Func_void_std__string.kt} +12 -12
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/rngooglemapsplus/{Func_void_std__optional_std__string__RNLatLng.kt → Func_void_std__string_RNLatLng.kt} +12 -12
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/rngooglemapsplus/HybridRNGoogleMapsPlusViewSpec.kt +38 -30
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/rngooglemapsplus/RNInitialProps.kt +6 -3
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/rngooglemapsplus/RNMarker.kt +6 -6
- package/nitrogen/generated/ios/RNGoogleMapsPlus-Swift-Cxx-Bridge.cpp +16 -8
- package/nitrogen/generated/ios/RNGoogleMapsPlus-Swift-Cxx-Bridge.hpp +58 -36
- package/nitrogen/generated/ios/c++/HybridRNGoogleMapsPlusViewSpecSwift.hpp +32 -20
- package/nitrogen/generated/ios/swift/Func_void_std__optional_std__string_.swift +6 -6
- package/nitrogen/generated/ios/swift/Func_void_std__string.swift +47 -0
- package/nitrogen/generated/ios/swift/Func_void_std__string_RNLatLng.swift +47 -0
- package/nitrogen/generated/ios/swift/HybridRNGoogleMapsPlusViewSpec.swift +12 -10
- package/nitrogen/generated/ios/swift/HybridRNGoogleMapsPlusViewSpec_cxx.swift +142 -180
- package/nitrogen/generated/ios/swift/RNInitialProps.swift +31 -1
- package/nitrogen/generated/ios/swift/RNMarker.swift +24 -31
- package/nitrogen/generated/shared/c++/HybridRNGoogleMapsPlusViewSpec.cpp +2 -0
- package/nitrogen/generated/shared/c++/HybridRNGoogleMapsPlusViewSpec.hpp +22 -20
- package/nitrogen/generated/shared/c++/RNInitialProps.hpp +6 -2
- package/nitrogen/generated/shared/c++/RNMarker.hpp +6 -6
- package/nitrogen/generated/shared/c++/views/HybridRNGoogleMapsPlusViewComponent.cpp +20 -20
- package/nitrogen/generated/shared/c++/views/HybridRNGoogleMapsPlusViewComponent.hpp +10 -10
- package/package.json +1 -1
- package/src/RNGoogleMapsPlusView.nitro.ts +14 -10
- package/src/types.ts +2 -1
- package/nitrogen/generated/android/c++/JFunc_void_std__optional_std__string_.hpp +0 -76
- package/nitrogen/generated/android/c++/JFunc_void_std__optional_std__string__RNLatLng.hpp +0 -78
- package/nitrogen/generated/ios/swift/Func_void_std__optional_std__string__RNLatLng.swift +0 -54
|
@@ -3,12 +3,18 @@ package com.rngooglemapsplus.extensions
|
|
|
3
3
|
import com.rngooglemapsplus.RNCircle
|
|
4
4
|
|
|
5
5
|
fun RNCircle.circleEquals(b: RNCircle): Boolean {
|
|
6
|
+
if (!centerEquals(b)) return false
|
|
6
7
|
if (zIndex != b.zIndex) return false
|
|
7
8
|
if (pressable != b.pressable) return false
|
|
8
|
-
if (center != b.center) return false
|
|
9
9
|
if (radius != b.radius) return false
|
|
10
10
|
if (strokeWidth != b.strokeWidth) return false
|
|
11
11
|
if (strokeColor != b.strokeColor) return false
|
|
12
12
|
if (fillColor != b.fillColor) return false
|
|
13
13
|
return true
|
|
14
14
|
}
|
|
15
|
+
|
|
16
|
+
fun RNCircle.centerEquals(b: RNCircle): Boolean {
|
|
17
|
+
if (center.latitude != b.center.latitude) return false
|
|
18
|
+
if (center.longitude != b.center.longitude) return false
|
|
19
|
+
return true
|
|
20
|
+
}
|
|
@@ -2,24 +2,61 @@ package com.rngooglemapsplus.extensions
|
|
|
2
2
|
|
|
3
3
|
import com.rngooglemapsplus.RNMarker
|
|
4
4
|
|
|
5
|
-
fun RNMarker.markerEquals(b: RNMarker): Boolean
|
|
6
|
-
id
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
5
|
+
fun RNMarker.markerEquals(b: RNMarker): Boolean {
|
|
6
|
+
if (id != b.id) return false
|
|
7
|
+
if (zIndex != b.zIndex) return false
|
|
8
|
+
if (!coordinatesEquals(b)) return false
|
|
9
|
+
if (!anchorEquals(b)) return false
|
|
10
|
+
if (!infoWindowAnchorEquals(b)) return false
|
|
11
|
+
if (title != b.title) return false
|
|
12
|
+
if (snippet != b.snippet) return false
|
|
13
|
+
if (opacity != b.opacity) return false
|
|
14
|
+
if (flat != b.flat) return false
|
|
15
|
+
if (draggable != b.draggable) return false
|
|
16
|
+
if (rotation != b.rotation) return false
|
|
17
|
+
if (!markerInfoWindowStyleEquals(b)) return false
|
|
18
|
+
if (!markerStyleEquals(b)) return false
|
|
19
|
+
|
|
20
|
+
return true
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
fun RNMarker.coordinatesEquals(b: RNMarker): Boolean {
|
|
24
|
+
if (coordinate.latitude != b.coordinate.latitude) return false
|
|
25
|
+
if (coordinate.longitude != b.coordinate.longitude) return false
|
|
26
|
+
return true
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
fun RNMarker.anchorEquals(b: RNMarker): Boolean {
|
|
30
|
+
if (anchor?.x != b.anchor?.x) return false
|
|
31
|
+
if (anchor?.y != b.anchor?.y) return false
|
|
32
|
+
return true
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
fun RNMarker.infoWindowAnchorEquals(b: RNMarker): Boolean {
|
|
36
|
+
if (infoWindowAnchor?.x != b.infoWindowAnchor?.x) return false
|
|
37
|
+
if (infoWindowAnchor?.y != b.infoWindowAnchor?.y) return false
|
|
38
|
+
return true
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
fun RNMarker.markerInfoWindowStyleEquals(b: RNMarker): Boolean {
|
|
42
|
+
if (infoWindowIconSvg?.width != b.infoWindowIconSvg?.width) return false
|
|
43
|
+
if (infoWindowIconSvg?.height != b.infoWindowIconSvg?.height) return false
|
|
44
|
+
if (infoWindowIconSvg?.svgString != b.infoWindowIconSvg?.svgString) return false
|
|
45
|
+
|
|
46
|
+
return true
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
fun RNMarker.markerStyleEquals(b: RNMarker): Boolean {
|
|
50
|
+
if (iconSvg?.width != b.iconSvg?.width) return false
|
|
51
|
+
if (iconSvg?.height != b.iconSvg?.height) return false
|
|
52
|
+
if (iconSvg?.svgString != b.iconSvg?.svgString) return false
|
|
53
|
+
|
|
54
|
+
return true
|
|
55
|
+
}
|
|
21
56
|
|
|
22
57
|
fun RNMarker.styleHash(): Int =
|
|
23
58
|
arrayOf<Any?>(
|
|
24
|
-
iconSvg,
|
|
59
|
+
iconSvg?.width,
|
|
60
|
+
iconSvg?.height,
|
|
61
|
+
iconSvg?.svgString,
|
|
25
62
|
).contentHashCode()
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
package com.rngooglemapsplus.extensions
|
|
2
2
|
|
|
3
|
+
import com.google.android.gms.maps.model.LatLng
|
|
3
4
|
import com.rngooglemapsplus.RNPolygon
|
|
5
|
+
import com.rngooglemapsplus.RNPolygonHole
|
|
4
6
|
|
|
5
7
|
fun RNPolygon.polygonEquals(b: RNPolygon): Boolean {
|
|
6
8
|
if (zIndex != b.zIndex) return false
|
|
@@ -9,7 +11,12 @@ fun RNPolygon.polygonEquals(b: RNPolygon): Boolean {
|
|
|
9
11
|
if (fillColor != b.fillColor) return false
|
|
10
12
|
if (strokeColor != b.strokeColor) return false
|
|
11
13
|
if (geodesic != b.geodesic) return false
|
|
12
|
-
if (!
|
|
14
|
+
if (!coordinatesEquals(b)) return false
|
|
15
|
+
if (!holesEquals(b)) return false
|
|
16
|
+
return true
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
fun RNPolygon.coordinatesEquals(b: RNPolygon): Boolean {
|
|
13
20
|
val ac = coordinates
|
|
14
21
|
val bc = b.coordinates
|
|
15
22
|
if (ac.size != bc.size) return false
|
|
@@ -20,3 +27,26 @@ fun RNPolygon.polygonEquals(b: RNPolygon): Boolean {
|
|
|
20
27
|
}
|
|
21
28
|
return true
|
|
22
29
|
}
|
|
30
|
+
|
|
31
|
+
fun RNPolygon.holesEquals(b: RNPolygon): Boolean {
|
|
32
|
+
if (holes?.size != b.holes?.size) return false
|
|
33
|
+
if (holes != null && b.holes != null) {
|
|
34
|
+
for (i in holes.indices) {
|
|
35
|
+
val ah = holes[i]
|
|
36
|
+
val bh = b.holes[i]
|
|
37
|
+
|
|
38
|
+
if (ah.coordinates.size != bh.coordinates.size) return false
|
|
39
|
+
for (j in ah.coordinates.indices) {
|
|
40
|
+
val p = ah.coordinates[j]
|
|
41
|
+
val q = bh.coordinates[j]
|
|
42
|
+
if (p.latitude != q.latitude || p.longitude != q.longitude) return false
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
return true
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
fun Array<RNPolygonHole>.toMapsPolygonHoles(): List<List<LatLng>> =
|
|
50
|
+
this.map { hole ->
|
|
51
|
+
hole.coordinates.map { it.toLatLng() }
|
|
52
|
+
}
|
|
@@ -5,11 +5,16 @@ import com.rngooglemapsplus.RNPolyline
|
|
|
5
5
|
fun RNPolyline.polylineEquals(b: RNPolyline): Boolean {
|
|
6
6
|
if (zIndex != b.zIndex) return false
|
|
7
7
|
if (pressable != b.pressable) return false
|
|
8
|
-
if (
|
|
8
|
+
if (width != b.width) return false
|
|
9
9
|
if (lineCap != b.lineCap) return false
|
|
10
10
|
if (lineJoin != b.lineJoin) return false
|
|
11
11
|
if (geodesic != b.geodesic) return false
|
|
12
12
|
if (color != b.color) return false
|
|
13
|
+
if (!coordinatesEquals(b)) return false
|
|
14
|
+
return true
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
fun RNPolyline.coordinatesEquals(b: RNPolyline): Boolean {
|
|
13
18
|
val ac = coordinates
|
|
14
19
|
val bc = b.coordinates
|
|
15
20
|
if (ac.size != bc.size) return false
|
|
@@ -267,24 +267,43 @@ GMSIndoorDisplayDelegate {
|
|
|
267
267
|
var onMapPress: ((RNLatLng) -> Void)?
|
|
268
268
|
var onMapLongPress: ((RNLatLng) -> Void)?
|
|
269
269
|
var onPoiPress: ((String, String, RNLatLng) -> Void)?
|
|
270
|
-
var onMarkerPress: ((String
|
|
271
|
-
var onPolylinePress: ((String
|
|
272
|
-
var onPolygonPress: ((String
|
|
273
|
-
var onCirclePress: ((String
|
|
274
|
-
var onMarkerDragStart: ((String
|
|
275
|
-
var onMarkerDrag: ((String
|
|
276
|
-
var onMarkerDragEnd: ((String
|
|
270
|
+
var onMarkerPress: ((String) -> Void)?
|
|
271
|
+
var onPolylinePress: ((String) -> Void)?
|
|
272
|
+
var onPolygonPress: ((String) -> Void)?
|
|
273
|
+
var onCirclePress: ((String) -> Void)?
|
|
274
|
+
var onMarkerDragStart: ((String, RNLatLng) -> Void)?
|
|
275
|
+
var onMarkerDrag: ((String, RNLatLng) -> Void)?
|
|
276
|
+
var onMarkerDragEnd: ((String, RNLatLng) -> Void)?
|
|
277
277
|
var onIndoorBuildingFocused: ((RNIndoorBuilding) -> Void)?
|
|
278
278
|
var onIndoorLevelActivated: ((RNIndoorLevel) -> Void)?
|
|
279
|
-
var onInfoWindowPress: ((String
|
|
280
|
-
var onInfoWindowClose: ((String
|
|
281
|
-
var onInfoWindowLongPress: ((String
|
|
279
|
+
var onInfoWindowPress: ((String) -> Void)?
|
|
280
|
+
var onInfoWindowClose: ((String) -> Void)?
|
|
281
|
+
var onInfoWindowLongPress: ((String) -> Void)?
|
|
282
282
|
var onMyLocationPress: ((RNLocation) -> Void)?
|
|
283
283
|
var onMyLocationButtonPress: ((Bool) -> Void)?
|
|
284
284
|
var onCameraChangeStart: ((RNRegion, RNCamera, Bool) -> Void)?
|
|
285
285
|
var onCameraChange: ((RNRegion, RNCamera, Bool) -> Void)?
|
|
286
286
|
var onCameraChangeComplete: ((RNRegion, RNCamera, Bool) -> Void)?
|
|
287
287
|
|
|
288
|
+
@MainActor
|
|
289
|
+
func showMarkerInfoWindow(id: String) {
|
|
290
|
+
onMain {
|
|
291
|
+
guard let marker = self.markersById[id] else { return }
|
|
292
|
+
self.mapView?.selectedMarker = nil
|
|
293
|
+
self.mapView?.selectedMarker = marker
|
|
294
|
+
}
|
|
295
|
+
}
|
|
296
|
+
|
|
297
|
+
@MainActor
|
|
298
|
+
func hideMarkerInfoWindow(id: String) {
|
|
299
|
+
onMain {
|
|
300
|
+
guard let marker = self.markersById[id] else { return }
|
|
301
|
+
if self.mapView?.selectedMarker == marker {
|
|
302
|
+
self.mapView?.selectedMarker = nil
|
|
303
|
+
}
|
|
304
|
+
}
|
|
305
|
+
}
|
|
306
|
+
|
|
288
307
|
@MainActor
|
|
289
308
|
func setCamera(camera: GMSCameraPosition, animated: Bool, durationMs: Double) {
|
|
290
309
|
if animated {
|
|
@@ -380,42 +399,16 @@ GMSIndoorDisplayDelegate {
|
|
|
380
399
|
mapView.layer.render(in: ctx.cgContext)
|
|
381
400
|
}
|
|
382
401
|
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
let data: Data?
|
|
393
|
-
switch imageFormat {
|
|
394
|
-
case .jpeg:
|
|
395
|
-
data = finalImage.jpegData(compressionQuality: quality)
|
|
396
|
-
case .png:
|
|
397
|
-
data = finalImage.pngData()
|
|
398
|
-
}
|
|
399
|
-
|
|
400
|
-
guard let imageData = data else {
|
|
401
|
-
promise.resolve(withResult: nil)
|
|
402
|
-
return
|
|
403
|
-
}
|
|
404
|
-
|
|
405
|
-
if resultIsFile {
|
|
406
|
-
let filename =
|
|
407
|
-
"map_snapshot_\(Int(Date().timeIntervalSince1970)).\(format)"
|
|
408
|
-
let fileURL = URL(fileURLWithPath: NSTemporaryDirectory())
|
|
409
|
-
.appendingPathComponent(filename)
|
|
410
|
-
do {
|
|
411
|
-
try imageData.write(to: fileURL)
|
|
412
|
-
promise.resolve(withResult: fileURL.path)
|
|
413
|
-
} catch {
|
|
414
|
-
promise.resolve(withResult: nil)
|
|
415
|
-
}
|
|
402
|
+
if let result = image.encode(
|
|
403
|
+
targetSize: size,
|
|
404
|
+
format: format,
|
|
405
|
+
imageFormat: imageFormat,
|
|
406
|
+
quality: quality,
|
|
407
|
+
resultIsFile: resultIsFile
|
|
408
|
+
) {
|
|
409
|
+
promise.resolve(withResult: result)
|
|
416
410
|
} else {
|
|
417
|
-
|
|
418
|
-
promise.resolve(withResult: "data:image/\(format);base64,\(base64)")
|
|
411
|
+
promise.resolve(withResult: nil)
|
|
419
412
|
}
|
|
420
413
|
}
|
|
421
414
|
|
|
@@ -434,14 +427,19 @@ GMSIndoorDisplayDelegate {
|
|
|
434
427
|
|
|
435
428
|
@MainActor
|
|
436
429
|
private func addMarkerInternal(id: String, marker: GMSMarker) {
|
|
437
|
-
marker.userData = id
|
|
438
430
|
marker.map = mapView
|
|
439
431
|
markersById[id] = marker
|
|
440
432
|
}
|
|
441
433
|
|
|
442
434
|
@MainActor
|
|
443
435
|
func updateMarker(id: String, block: @escaping (GMSMarker) -> Void) {
|
|
444
|
-
markersById[id].map {
|
|
436
|
+
markersById[id].map {
|
|
437
|
+
block($0)
|
|
438
|
+
if let mapView, mapView.selectedMarker == $0 {
|
|
439
|
+
mapView.selectedMarker = nil
|
|
440
|
+
mapView.selectedMarker = $0
|
|
441
|
+
}
|
|
442
|
+
}
|
|
445
443
|
}
|
|
446
444
|
|
|
447
445
|
@MainActor
|
|
@@ -468,8 +466,8 @@ GMSIndoorDisplayDelegate {
|
|
|
468
466
|
|
|
469
467
|
@MainActor
|
|
470
468
|
private func addPolylineInternal(id: String, polyline: GMSPolyline) {
|
|
469
|
+
polyline.tagData = PolylineTag(id: id)
|
|
471
470
|
polyline.map = mapView
|
|
472
|
-
polyline.userData = id
|
|
473
471
|
polylinesById[id] = polyline
|
|
474
472
|
}
|
|
475
473
|
|
|
@@ -502,8 +500,8 @@ GMSIndoorDisplayDelegate {
|
|
|
502
500
|
|
|
503
501
|
@MainActor
|
|
504
502
|
private func addPolygonInternal(id: String, polygon: GMSPolygon) {
|
|
503
|
+
polygon.tagData = PolygonTag(id: id)
|
|
505
504
|
polygon.map = mapView
|
|
506
|
-
polygon.userData = id
|
|
507
505
|
polygonsById[id] = polygon
|
|
508
506
|
}
|
|
509
507
|
|
|
@@ -536,8 +534,8 @@ GMSIndoorDisplayDelegate {
|
|
|
536
534
|
|
|
537
535
|
@MainActor
|
|
538
536
|
private func addCircleInternal(id: String, circle: GMSCircle) {
|
|
537
|
+
circle.tagData = CircleTag(id: id)
|
|
539
538
|
circle.map = mapView
|
|
540
|
-
circle.userData = id
|
|
541
539
|
circlesById[id] = circle
|
|
542
540
|
}
|
|
543
541
|
|
|
@@ -576,7 +574,10 @@ GMSIndoorDisplayDelegate {
|
|
|
576
574
|
|
|
577
575
|
@MainActor
|
|
578
576
|
func removeHeatmap(id: String) {
|
|
579
|
-
heatmapsById.removeValue(forKey: id).map {
|
|
577
|
+
heatmapsById.removeValue(forKey: id).map {
|
|
578
|
+
$0.clearTileCache()
|
|
579
|
+
$0.map = nil
|
|
580
|
+
}
|
|
580
581
|
}
|
|
581
582
|
|
|
582
583
|
@MainActor
|
|
@@ -610,6 +611,7 @@ GMSIndoorDisplayDelegate {
|
|
|
610
611
|
geometries: parser.placemarks
|
|
611
612
|
)
|
|
612
613
|
renderer.render()
|
|
614
|
+
kmlLayerById[id] = renderer
|
|
613
615
|
}
|
|
614
616
|
}
|
|
615
617
|
|
|
@@ -641,16 +643,23 @@ GMSIndoorDisplayDelegate {
|
|
|
641
643
|
urlTileOverlay: GMSURLTileLayer
|
|
642
644
|
) {
|
|
643
645
|
urlTileOverlay.map = mapView
|
|
646
|
+
urlTileOverlays[id] = urlTileOverlay
|
|
644
647
|
}
|
|
645
648
|
|
|
646
649
|
@MainActor
|
|
647
650
|
func removeUrlTileOverlay(id: String) {
|
|
648
|
-
urlTileOverlays.removeValue(forKey: id).map {
|
|
651
|
+
urlTileOverlays.removeValue(forKey: id).map {
|
|
652
|
+
$0.clearTileCache()
|
|
653
|
+
$0.map = nil
|
|
654
|
+
}
|
|
649
655
|
}
|
|
650
656
|
|
|
651
657
|
@MainActor
|
|
652
658
|
func clearUrlTileOverlay() {
|
|
653
|
-
urlTileOverlays.values.forEach {
|
|
659
|
+
urlTileOverlays.values.forEach {
|
|
660
|
+
$0.clearTileCache()
|
|
661
|
+
$0.map = nil
|
|
662
|
+
}
|
|
654
663
|
urlTileOverlays.removeAll()
|
|
655
664
|
pendingUrlTileOverlays.removeAll()
|
|
656
665
|
}
|
|
@@ -778,8 +787,7 @@ GMSIndoorDisplayDelegate {
|
|
|
778
787
|
|
|
779
788
|
func mapView(_ mapView: GMSMapView, didTap marker: GMSMarker) -> Bool {
|
|
780
789
|
onMain {
|
|
781
|
-
|
|
782
|
-
self.onMarkerPress?(marker.userData as? String, )
|
|
790
|
+
self.onMarkerPress?(marker.idTag)
|
|
783
791
|
}
|
|
784
792
|
return uiSettings?.consumeOnMarkerPress ?? false
|
|
785
793
|
}
|
|
@@ -788,13 +796,13 @@ GMSIndoorDisplayDelegate {
|
|
|
788
796
|
onMain {
|
|
789
797
|
switch overlay {
|
|
790
798
|
case let circle as GMSCircle:
|
|
791
|
-
self.onCirclePress?(circle.
|
|
799
|
+
self.onCirclePress?(circle.idTag)
|
|
792
800
|
|
|
793
801
|
case let polygon as GMSPolygon:
|
|
794
|
-
self.onPolygonPress?(polygon.
|
|
802
|
+
self.onPolygonPress?(polygon.idTag)
|
|
795
803
|
|
|
796
804
|
case let polyline as GMSPolyline:
|
|
797
|
-
self.onPolylinePress?(polyline.
|
|
805
|
+
self.onPolylinePress?(polyline.idTag)
|
|
798
806
|
|
|
799
807
|
default:
|
|
800
808
|
break
|
|
@@ -805,7 +813,7 @@ GMSIndoorDisplayDelegate {
|
|
|
805
813
|
func mapView(_ mapView: GMSMapView, didBeginDragging marker: GMSMarker) {
|
|
806
814
|
onMain {
|
|
807
815
|
self.onMarkerDragStart?(
|
|
808
|
-
marker.
|
|
816
|
+
marker.idTag,
|
|
809
817
|
marker.position.toRNLatLng()
|
|
810
818
|
)
|
|
811
819
|
}
|
|
@@ -814,7 +822,7 @@ GMSIndoorDisplayDelegate {
|
|
|
814
822
|
func mapView(_ mapView: GMSMapView, didDrag marker: GMSMarker) {
|
|
815
823
|
onMain {
|
|
816
824
|
self.onMarkerDrag?(
|
|
817
|
-
marker.
|
|
825
|
+
marker.idTag,
|
|
818
826
|
marker.position.toRNLatLng()
|
|
819
827
|
)
|
|
820
828
|
}
|
|
@@ -823,7 +831,7 @@ GMSIndoorDisplayDelegate {
|
|
|
823
831
|
func mapView(_ mapView: GMSMapView, didEndDragging marker: GMSMarker) {
|
|
824
832
|
onMain {
|
|
825
833
|
self.onMarkerDragEnd?(
|
|
826
|
-
marker.
|
|
834
|
+
marker.idTag,
|
|
827
835
|
marker.position.toRNLatLng()
|
|
828
836
|
)
|
|
829
837
|
}
|
|
@@ -857,13 +865,13 @@ GMSIndoorDisplayDelegate {
|
|
|
857
865
|
|
|
858
866
|
func mapView(_ mapView: GMSMapView, didTapInfoWindowOf marker: GMSMarker) {
|
|
859
867
|
onMain {
|
|
860
|
-
self.onInfoWindowPress?(marker.
|
|
868
|
+
self.onInfoWindowPress?(marker.idTag)
|
|
861
869
|
}
|
|
862
870
|
}
|
|
863
871
|
|
|
864
872
|
func mapView(_ mapView: GMSMapView, didCloseInfoWindowOf marker: GMSMarker) {
|
|
865
873
|
onMain {
|
|
866
|
-
self.onInfoWindowClose?(marker.
|
|
874
|
+
self.onInfoWindowClose?(marker.idTag)
|
|
867
875
|
}
|
|
868
876
|
}
|
|
869
877
|
|
|
@@ -872,7 +880,7 @@ GMSIndoorDisplayDelegate {
|
|
|
872
880
|
didLongPressInfoWindowOf marker: GMSMarker
|
|
873
881
|
) {
|
|
874
882
|
onMain {
|
|
875
|
-
self.onInfoWindowLongPress?(marker.
|
|
883
|
+
self.onInfoWindowLongPress?(marker.idTag)
|
|
876
884
|
}
|
|
877
885
|
}
|
|
878
886
|
|
|
@@ -893,4 +901,13 @@ GMSIndoorDisplayDelegate {
|
|
|
893
901
|
}
|
|
894
902
|
return uiSettings?.consumeOnMyLocationButtonPress ?? false
|
|
895
903
|
}
|
|
904
|
+
|
|
905
|
+
func mapView(_ mapView: GMSMapView, markerInfoWindow marker: GMSMarker) -> UIView? {
|
|
906
|
+
return markerBuilder.buildInfoWindow(iconSvg: marker.tagData.iconSvg)
|
|
907
|
+
}
|
|
908
|
+
|
|
909
|
+
func mapView(_ mapView: GMSMapView, markerInfoContents marker: GMSMarker)
|
|
910
|
+
-> UIView? {
|
|
911
|
+
return nil
|
|
912
|
+
}
|
|
896
913
|
}
|
|
@@ -17,13 +17,12 @@ final class MapCircleBuilder {
|
|
|
17
17
|
|
|
18
18
|
@MainActor
|
|
19
19
|
func update(_ prev: RNCircle, _ next: RNCircle, _ c: GMSCircle) {
|
|
20
|
-
if prev.
|
|
21
|
-
|| prev.center.longitude != next.center.longitude {
|
|
20
|
+
if !prev.centerEquals(next) {
|
|
22
21
|
c.position = next.center.toCLLocationCoordinate2D()
|
|
23
22
|
}
|
|
24
23
|
|
|
25
24
|
if prev.radius != next.radius {
|
|
26
|
-
c.radius = next.radius
|
|
25
|
+
c.radius = next.radius
|
|
27
26
|
}
|
|
28
27
|
|
|
29
28
|
if prev.fillColor != next.fillColor {
|