react-native-google-maps-plus 1.7.0-dev.13 → 1.7.0-dev.14
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/src/main/java/com/rngooglemapsplus/MapCircleBuilder.kt +2 -3
- package/android/src/main/java/com/rngooglemapsplus/MapMarkerBuilder.kt +20 -28
- 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/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/MapCircleBuilder.swift +2 -3
- package/ios/MapMarkerBuilder.swift +49 -45
- package/ios/MapPolygonBuilder.swift +6 -41
- package/ios/MapPolylineBuilder.swift +2 -10
- 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/lib/module/types.js.map +1 -1
- package/lib/typescript/src/types.d.ts +0 -1
- package/lib/typescript/src/types.d.ts.map +1 -1
- package/nitrogen/generated/android/c++/JRNMarker.hpp +1 -5
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/rngooglemapsplus/RNMarker.kt +2 -5
- package/nitrogen/generated/ios/swift/RNMarker.swift +1 -31
- package/nitrogen/generated/shared/c++/RNMarker.hpp +1 -5
- package/package.json +1 -1
- package/src/types.ts +0 -1
|
@@ -4,6 +4,7 @@ import android.graphics.Color
|
|
|
4
4
|
import com.facebook.react.uimanager.PixelUtil.dpToPx
|
|
5
5
|
import com.google.android.gms.maps.model.Circle
|
|
6
6
|
import com.google.android.gms.maps.model.CircleOptions
|
|
7
|
+
import com.rngooglemapsplus.extensions.centerEquals
|
|
7
8
|
import com.rngooglemapsplus.extensions.onUi
|
|
8
9
|
import com.rngooglemapsplus.extensions.toColor
|
|
9
10
|
import com.rngooglemapsplus.extensions.toLatLng
|
|
@@ -25,9 +26,7 @@ class MapCircleBuilder {
|
|
|
25
26
|
next: RNCircle,
|
|
26
27
|
circle: Circle,
|
|
27
28
|
) = onUi {
|
|
28
|
-
if (prev.
|
|
29
|
-
prev.center.longitude != next.center.longitude
|
|
30
|
-
) {
|
|
29
|
+
if (!prev.centerEquals(next)) {
|
|
31
30
|
circle.center = next.center.toLatLng()
|
|
32
31
|
}
|
|
33
32
|
|
|
@@ -19,6 +19,10 @@ import com.google.android.gms.maps.model.BitmapDescriptor
|
|
|
19
19
|
import com.google.android.gms.maps.model.BitmapDescriptorFactory
|
|
20
20
|
import com.google.android.gms.maps.model.Marker
|
|
21
21
|
import com.google.android.gms.maps.model.MarkerOptions
|
|
22
|
+
import com.rngooglemapsplus.extensions.anchorEquals
|
|
23
|
+
import com.rngooglemapsplus.extensions.coordinatesEquals
|
|
24
|
+
import com.rngooglemapsplus.extensions.infoWindowAnchorEquals
|
|
25
|
+
import com.rngooglemapsplus.extensions.markerInfoWindowStyleEquals
|
|
22
26
|
import com.rngooglemapsplus.extensions.markerStyleEquals
|
|
23
27
|
import com.rngooglemapsplus.extensions.onUi
|
|
24
28
|
import com.rngooglemapsplus.extensions.styleHash
|
|
@@ -169,51 +173,39 @@ class MapMarkerBuilder(
|
|
|
169
173
|
next: RNMarker,
|
|
170
174
|
marker: Marker,
|
|
171
175
|
) = onUi {
|
|
172
|
-
if (prev.
|
|
173
|
-
prev.coordinate.longitude != next.coordinate.longitude
|
|
174
|
-
) {
|
|
176
|
+
if (!prev.coordinatesEquals(next)) {
|
|
175
177
|
marker.position = next.coordinate.toLatLng()
|
|
176
178
|
}
|
|
177
179
|
|
|
178
180
|
if (!prev.markerStyleEquals(next)) {
|
|
179
181
|
buildIconAsync(marker.id, next) { icon ->
|
|
180
182
|
marker.setIcon(icon)
|
|
181
|
-
if (prev.
|
|
182
|
-
prev.infoWindowAnchor?.y != next.infoWindowAnchor?.y
|
|
183
|
-
) {
|
|
184
|
-
marker.setInfoWindowAnchor(
|
|
185
|
-
(next.infoWindowAnchor?.x ?: 0.5f).toFloat(),
|
|
186
|
-
(next.infoWindowAnchor?.y ?: 0f).toFloat(),
|
|
187
|
-
)
|
|
188
|
-
}
|
|
189
|
-
|
|
190
|
-
if (prev.anchor?.x != next.anchor?.x ||
|
|
191
|
-
prev.anchor?.y != next.anchor?.y
|
|
192
|
-
) {
|
|
183
|
+
if (!prev.anchorEquals(next)) {
|
|
193
184
|
marker.setAnchor(
|
|
194
185
|
(next.anchor?.x ?: 0.5f).toFloat(),
|
|
195
186
|
(next.anchor?.y ?: 1.0f).toFloat(),
|
|
196
187
|
)
|
|
197
188
|
}
|
|
189
|
+
if (!prev.infoWindowAnchorEquals(next)) {
|
|
190
|
+
marker.setInfoWindowAnchor(
|
|
191
|
+
(next.infoWindowAnchor?.x ?: 0.5f).toFloat(),
|
|
192
|
+
(next.infoWindowAnchor?.y ?: 0f).toFloat(),
|
|
193
|
+
)
|
|
194
|
+
}
|
|
198
195
|
}
|
|
199
196
|
} else {
|
|
200
|
-
if (prev.
|
|
201
|
-
prev.infoWindowAnchor?.y != next.infoWindowAnchor?.y
|
|
202
|
-
) {
|
|
203
|
-
marker.setInfoWindowAnchor(
|
|
204
|
-
(next.infoWindowAnchor?.x ?: 0.5f).toFloat(),
|
|
205
|
-
(next.infoWindowAnchor?.y ?: 0f).toFloat(),
|
|
206
|
-
)
|
|
207
|
-
}
|
|
208
|
-
|
|
209
|
-
if (prev.anchor?.x != next.anchor?.x ||
|
|
210
|
-
prev.anchor?.y != next.anchor?.y
|
|
211
|
-
) {
|
|
197
|
+
if (!prev.anchorEquals(next)) {
|
|
212
198
|
marker.setAnchor(
|
|
213
199
|
(next.anchor?.x ?: 0.5f).toFloat(),
|
|
214
200
|
(next.anchor?.y ?: 1.0f).toFloat(),
|
|
215
201
|
)
|
|
216
202
|
}
|
|
203
|
+
if (!prev.infoWindowAnchorEquals(next)) {
|
|
204
|
+
marker.setInfoWindowAnchor(
|
|
205
|
+
(next.infoWindowAnchor?.x ?: 0.5f).toFloat(),
|
|
206
|
+
(next.infoWindowAnchor?.y ?: 0f).toFloat(),
|
|
207
|
+
)
|
|
208
|
+
}
|
|
217
209
|
}
|
|
218
210
|
|
|
219
211
|
if (prev.title != next.title) {
|
|
@@ -244,7 +236,7 @@ class MapMarkerBuilder(
|
|
|
244
236
|
marker.zIndex = next.zIndex?.toFloat() ?: 0f
|
|
245
237
|
}
|
|
246
238
|
|
|
247
|
-
if (prev.
|
|
239
|
+
if (!prev.markerInfoWindowStyleEquals(next)) {
|
|
248
240
|
marker.tag = MarkerTag(id = next.id, iconSvg = next.infoWindowIconSvg)
|
|
249
241
|
}
|
|
250
242
|
}
|
|
@@ -4,9 +4,12 @@ import android.graphics.Color
|
|
|
4
4
|
import com.facebook.react.uimanager.PixelUtil.dpToPx
|
|
5
5
|
import com.google.android.gms.maps.model.Polygon
|
|
6
6
|
import com.google.android.gms.maps.model.PolygonOptions
|
|
7
|
+
import com.rngooglemapsplus.extensions.coordinatesEquals
|
|
8
|
+
import com.rngooglemapsplus.extensions.holesEquals
|
|
7
9
|
import com.rngooglemapsplus.extensions.onUi
|
|
8
10
|
import com.rngooglemapsplus.extensions.toColor
|
|
9
11
|
import com.rngooglemapsplus.extensions.toLatLng
|
|
12
|
+
import com.rngooglemapsplus.extensions.toMapsPolygonHoles
|
|
10
13
|
|
|
11
14
|
class MapPolygonBuilder {
|
|
12
15
|
fun build(poly: RNPolygon): PolygonOptions =
|
|
@@ -32,32 +35,12 @@ class MapPolygonBuilder {
|
|
|
32
35
|
next: RNPolygon,
|
|
33
36
|
poly: Polygon,
|
|
34
37
|
) = onUi {
|
|
35
|
-
|
|
36
|
-
prev.coordinates.size != next.coordinates.size ||
|
|
37
|
-
!prev.coordinates.zip(next.coordinates).all { (a, b) ->
|
|
38
|
-
a.latitude == b.latitude && a.longitude == b.longitude
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
if (coordsChanged) {
|
|
38
|
+
if (!prev.coordinatesEquals(next)) {
|
|
42
39
|
poly.points = next.coordinates.map { it.toLatLng() }
|
|
43
40
|
}
|
|
44
41
|
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
val holesChanged =
|
|
48
|
-
prevHoles.size != nextHoles.size ||
|
|
49
|
-
!prevHoles.zip(nextHoles).all { (ha, hb) ->
|
|
50
|
-
ha.coordinates.size == hb.coordinates.size &&
|
|
51
|
-
ha.coordinates.zip(hb.coordinates).all { (a, b) ->
|
|
52
|
-
a.latitude == b.latitude && a.longitude == b.longitude
|
|
53
|
-
}
|
|
54
|
-
}
|
|
55
|
-
|
|
56
|
-
if (holesChanged) {
|
|
57
|
-
poly.holes =
|
|
58
|
-
nextHoles.map { hole ->
|
|
59
|
-
hole.coordinates.map { it.toLatLng() }
|
|
60
|
-
}
|
|
42
|
+
if (!prev.holesEquals(next)) {
|
|
43
|
+
poly.holes = next.holes?.toMapsPolygonHoles() ?: emptyList()
|
|
61
44
|
}
|
|
62
45
|
|
|
63
46
|
if (prev.fillColor != next.fillColor) {
|
|
@@ -2,16 +2,14 @@ package com.rngooglemapsplus
|
|
|
2
2
|
|
|
3
3
|
import android.graphics.Color
|
|
4
4
|
import com.facebook.react.uimanager.PixelUtil.dpToPx
|
|
5
|
-
import com.google.android.gms.maps.model.ButtCap
|
|
6
|
-
import com.google.android.gms.maps.model.Cap
|
|
7
|
-
import com.google.android.gms.maps.model.JointType
|
|
8
5
|
import com.google.android.gms.maps.model.Polyline
|
|
9
6
|
import com.google.android.gms.maps.model.PolylineOptions
|
|
10
|
-
import com.
|
|
11
|
-
import com.google.android.gms.maps.model.SquareCap
|
|
7
|
+
import com.rngooglemapsplus.extensions.coordinatesEquals
|
|
12
8
|
import com.rngooglemapsplus.extensions.onUi
|
|
13
9
|
import com.rngooglemapsplus.extensions.toColor
|
|
14
10
|
import com.rngooglemapsplus.extensions.toLatLng
|
|
11
|
+
import com.rngooglemapsplus.extensions.toMapJointType
|
|
12
|
+
import com.rngooglemapsplus.extensions.toMapLineCap
|
|
15
13
|
|
|
16
14
|
class MapPolylineBuilder {
|
|
17
15
|
fun build(pl: RNPolyline): PolylineOptions =
|
|
@@ -21,10 +19,10 @@ class MapPolylineBuilder {
|
|
|
21
19
|
}
|
|
22
20
|
pl.width?.let { width(it.dpToPx()) }
|
|
23
21
|
pl.lineCap?.let {
|
|
24
|
-
startCap(
|
|
25
|
-
endCap(
|
|
22
|
+
startCap(it.toMapLineCap())
|
|
23
|
+
endCap(it.toMapLineCap())
|
|
26
24
|
}
|
|
27
|
-
pl.lineJoin?.let { jointType(
|
|
25
|
+
pl.lineJoin?.let { jointType(it.toMapJointType()) }
|
|
28
26
|
pl.color?.let { color(it.toColor()) }
|
|
29
27
|
pl.geodesic?.let { geodesic(it) }
|
|
30
28
|
pl.pressable?.let { clickable(it) }
|
|
@@ -36,13 +34,7 @@ class MapPolylineBuilder {
|
|
|
36
34
|
next: RNPolyline,
|
|
37
35
|
polyline: Polyline,
|
|
38
36
|
) = onUi {
|
|
39
|
-
|
|
40
|
-
prev.coordinates.size != next.coordinates.size ||
|
|
41
|
-
!prev.coordinates.zip(next.coordinates).all { (a, b) ->
|
|
42
|
-
a.latitude == b.latitude && a.longitude == b.longitude
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
if (coordsChanged) {
|
|
37
|
+
if (!prev.coordinatesEquals(next)) {
|
|
46
38
|
polyline.points = next.coordinates.map { it.toLatLng() }
|
|
47
39
|
}
|
|
48
40
|
|
|
@@ -50,17 +42,13 @@ class MapPolylineBuilder {
|
|
|
50
42
|
polyline.width = next.width?.dpToPx() ?: 1f
|
|
51
43
|
}
|
|
52
44
|
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
polyline.startCap = newCap
|
|
57
|
-
polyline.endCap = newCap
|
|
45
|
+
if (prev.lineCap != next.lineCap) {
|
|
46
|
+
polyline.startCap = next.lineCap.toMapLineCap()
|
|
47
|
+
polyline.endCap = next.lineCap.toMapLineCap()
|
|
58
48
|
}
|
|
59
49
|
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
if (newJoin != prevJoin) {
|
|
63
|
-
polyline.jointType = newJoin
|
|
50
|
+
if (prev.lineJoin != next.lineJoin) {
|
|
51
|
+
polyline.jointType = next.lineJoin.toMapJointType()
|
|
64
52
|
}
|
|
65
53
|
|
|
66
54
|
if (prev.color != next.color) {
|
|
@@ -79,19 +67,4 @@ class MapPolylineBuilder {
|
|
|
79
67
|
polyline.zIndex = next.zIndex?.toFloat() ?: 0f
|
|
80
68
|
}
|
|
81
69
|
}
|
|
82
|
-
|
|
83
|
-
private fun mapLineCap(type: RNLineCapType?): Cap =
|
|
84
|
-
when (type) {
|
|
85
|
-
RNLineCapType.ROUND -> RoundCap()
|
|
86
|
-
RNLineCapType.SQUARE -> SquareCap()
|
|
87
|
-
else -> ButtCap()
|
|
88
|
-
}
|
|
89
|
-
|
|
90
|
-
private fun mapLineJoin(type: RNLineJoinType?): Int =
|
|
91
|
-
when (type) {
|
|
92
|
-
RNLineJoinType.ROUND -> JointType.ROUND
|
|
93
|
-
RNLineJoinType.BEVEL -> JointType.BEVEL
|
|
94
|
-
RNLineJoinType.MITER -> JointType.DEFAULT
|
|
95
|
-
null -> JointType.DEFAULT
|
|
96
|
-
}
|
|
97
70
|
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
package com.rngooglemapsplus.extensions
|
|
2
|
+
|
|
3
|
+
import com.google.android.gms.maps.model.ButtCap
|
|
4
|
+
import com.google.android.gms.maps.model.Cap
|
|
5
|
+
import com.google.android.gms.maps.model.RoundCap
|
|
6
|
+
import com.google.android.gms.maps.model.SquareCap
|
|
7
|
+
import com.rngooglemapsplus.RNLineCapType
|
|
8
|
+
|
|
9
|
+
fun RNLineCapType?.toMapLineCap(): Cap =
|
|
10
|
+
when (this) {
|
|
11
|
+
RNLineCapType.ROUND -> RoundCap()
|
|
12
|
+
RNLineCapType.SQUARE -> SquareCap()
|
|
13
|
+
else -> ButtCap()
|
|
14
|
+
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
package com.rngooglemapsplus.extensions
|
|
2
|
+
|
|
3
|
+
import com.google.android.gms.maps.model.JointType
|
|
4
|
+
import com.rngooglemapsplus.RNLineJoinType
|
|
5
|
+
|
|
6
|
+
fun RNLineJoinType?.toMapJointType(): Int =
|
|
7
|
+
when (this) {
|
|
8
|
+
RNLineJoinType.ROUND -> JointType.ROUND
|
|
9
|
+
RNLineJoinType.BEVEL -> JointType.BEVEL
|
|
10
|
+
RNLineJoinType.MITER -> JointType.DEFAULT
|
|
11
|
+
null -> JointType.DEFAULT
|
|
12
|
+
}
|
|
@@ -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
|
|
@@ -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 {
|
|
@@ -15,7 +15,6 @@ final class MapMarkerBuilder {
|
|
|
15
15
|
let marker = GMSMarker(
|
|
16
16
|
position: m.coordinate.toCLLocationCoordinate2D()
|
|
17
17
|
)
|
|
18
|
-
marker.tracksViewChanges = true
|
|
19
18
|
marker.icon = icon
|
|
20
19
|
m.title.map { marker.title = $0 }
|
|
21
20
|
m.snippet.map { marker.snippet = $0 }
|
|
@@ -42,65 +41,28 @@ final class MapMarkerBuilder {
|
|
|
42
41
|
iconSvg: m.infoWindowIconSvg
|
|
43
42
|
)
|
|
44
43
|
|
|
45
|
-
onMainAsync { [weak marker] in
|
|
46
|
-
try? await Task.sleep(nanoseconds: 250_000_000)
|
|
47
|
-
marker?.tracksViewChanges = false
|
|
48
|
-
}
|
|
49
|
-
|
|
50
44
|
return marker
|
|
51
45
|
}
|
|
52
46
|
|
|
53
47
|
@MainActor
|
|
54
48
|
func update(_ prev: RNMarker, _ next: RNMarker, _ m: GMSMarker) {
|
|
55
|
-
if prev.
|
|
56
|
-
|| prev.coordinate.longitude != next.coordinate.longitude {
|
|
49
|
+
if !prev.coordinateEquals(next) {
|
|
57
50
|
m.position = next.coordinate.toCLLocationCoordinate2D()
|
|
58
51
|
}
|
|
59
52
|
|
|
60
|
-
if prev.title != next.title {
|
|
61
|
-
m.title = next.title
|
|
62
|
-
}
|
|
63
|
-
|
|
64
|
-
if prev.snippet != next.snippet {
|
|
65
|
-
m.snippet = next.snippet
|
|
66
|
-
}
|
|
67
|
-
|
|
68
|
-
if prev.opacity != next.opacity {
|
|
69
|
-
let opacity = Float(next.opacity ?? 1)
|
|
70
|
-
m.opacity = opacity
|
|
71
|
-
m.iconView?.alpha = CGFloat(opacity)
|
|
72
|
-
}
|
|
73
|
-
|
|
74
|
-
if prev.flat != next.flat {
|
|
75
|
-
m.isFlat = next.flat ?? false
|
|
76
|
-
}
|
|
77
|
-
|
|
78
|
-
if prev.draggable != next.draggable {
|
|
79
|
-
m.isDraggable = next.draggable ?? false
|
|
80
|
-
}
|
|
81
|
-
|
|
82
|
-
if prev.rotation != next.rotation {
|
|
83
|
-
m.rotation = next.rotation ?? 0
|
|
84
|
-
}
|
|
85
|
-
|
|
86
|
-
if prev.zIndex != next.zIndex {
|
|
87
|
-
m.zIndex = Int32(next.zIndex ?? 0)
|
|
88
|
-
}
|
|
89
|
-
|
|
90
53
|
if !prev.markerStyleEquals(next) {
|
|
91
54
|
buildIconAsync(next.id, next) { img in
|
|
92
55
|
m.tracksViewChanges = true
|
|
93
56
|
m.icon = img
|
|
94
57
|
|
|
95
|
-
if prev.
|
|
58
|
+
if !prev.anchorEquals(next) {
|
|
96
59
|
m.groundAnchor = CGPoint(
|
|
97
60
|
x: next.anchor?.x ?? 0.5,
|
|
98
61
|
y: next.anchor?.y ?? 1
|
|
99
62
|
)
|
|
100
63
|
}
|
|
101
64
|
|
|
102
|
-
if prev.
|
|
103
|
-
|| prev.infoWindowAnchor?.y != next.infoWindowAnchor?.y {
|
|
65
|
+
if !prev.infoWindowAnchorEquals(next) {
|
|
104
66
|
m.infoWindowAnchor = CGPoint(
|
|
105
67
|
x: next.infoWindowAnchor?.x ?? 0.5,
|
|
106
68
|
y: next.infoWindowAnchor?.y ?? 0
|
|
@@ -113,26 +75,68 @@ final class MapMarkerBuilder {
|
|
|
113
75
|
}
|
|
114
76
|
}
|
|
115
77
|
} else {
|
|
116
|
-
if prev.
|
|
78
|
+
if !prev.anchorEquals(next) {
|
|
117
79
|
m.groundAnchor = CGPoint(
|
|
118
80
|
x: next.anchor?.x ?? 0.5,
|
|
119
81
|
y: next.anchor?.y ?? 1
|
|
120
82
|
)
|
|
121
83
|
}
|
|
122
84
|
|
|
123
|
-
if prev.
|
|
124
|
-
|| prev.infoWindowAnchor?.y != next.infoWindowAnchor?.y {
|
|
85
|
+
if !prev.infoWindowAnchorEquals(next) {
|
|
125
86
|
m.infoWindowAnchor = CGPoint(
|
|
126
87
|
x: next.infoWindowAnchor?.x ?? 0.5,
|
|
127
88
|
y: next.infoWindowAnchor?.y ?? 0
|
|
128
89
|
)
|
|
129
90
|
}
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
var tracksInfoWindowChanges = false
|
|
94
|
+
|
|
95
|
+
if prev.title != next.title {
|
|
96
|
+
tracksInfoWindowChanges = true
|
|
97
|
+
m.title = next.title
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
if prev.snippet != next.snippet {
|
|
101
|
+
tracksInfoWindowChanges = true
|
|
102
|
+
m.snippet = next.snippet
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
if(tracksInfoWindowChanges) {
|
|
106
|
+
m.tracksInfoWindowChanges = true
|
|
107
|
+
onMainAsync { [weak m] in
|
|
108
|
+
try? await Task.sleep(nanoseconds: 250_000_000)
|
|
109
|
+
m?.tracksInfoWindowChanges = false
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
if prev.opacity != next.opacity {
|
|
114
|
+
let opacity = Float(next.opacity ?? 1)
|
|
115
|
+
m.opacity = opacity
|
|
116
|
+
m.iconView?.alpha = CGFloat(opacity)
|
|
117
|
+
}
|
|
130
118
|
|
|
119
|
+
if prev.flat != next.flat {
|
|
120
|
+
m.isFlat = next.flat ?? false
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
if prev.draggable != next.draggable {
|
|
124
|
+
m.isDraggable = next.draggable ?? false
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
if prev.rotation != next.rotation {
|
|
128
|
+
m.rotation = next.rotation ?? 0
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
if prev.zIndex != next.zIndex {
|
|
132
|
+
m.zIndex = Int32(next.zIndex ?? 0)
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
if !prev.markerInfoWindowStyleEquals(next) {
|
|
131
136
|
m.tagData = MarkerTag(
|
|
132
137
|
id: next.id,
|
|
133
138
|
iconSvg: next.infoWindowIconSvg
|
|
134
139
|
)
|
|
135
|
-
|
|
136
140
|
}
|
|
137
141
|
}
|
|
138
142
|
|
|
@@ -3,13 +3,7 @@ import GoogleMaps
|
|
|
3
3
|
final class MapPolygonBuilder {
|
|
4
4
|
@MainActor
|
|
5
5
|
func build(_ p: RNPolygon) -> GMSPolygon {
|
|
6
|
-
let path =
|
|
7
|
-
p.coordinates.forEach {
|
|
8
|
-
path.add(
|
|
9
|
-
$0.toCLLocationCoordinate2D()
|
|
10
|
-
)
|
|
11
|
-
}
|
|
12
|
-
|
|
6
|
+
let path = p.coordinates.toGMSPath()
|
|
13
7
|
let pg = GMSPolygon(path: path)
|
|
14
8
|
|
|
15
9
|
p.fillColor.map { pg.fillColor = $0.toUIColor() }
|
|
@@ -17,13 +11,7 @@ final class MapPolygonBuilder {
|
|
|
17
11
|
p.strokeWidth.map { pg.strokeWidth = CGFloat($0) }
|
|
18
12
|
p.pressable.map { pg.isTappable = $0 }
|
|
19
13
|
p.geodesic.map { pg.geodesic = $0 }
|
|
20
|
-
p.holes.
|
|
21
|
-
pg.holes = $0.map { hole in
|
|
22
|
-
let path = GMSMutablePath()
|
|
23
|
-
hole.coordinates.forEach { path.add($0.toCLLocationCoordinate2D()) }
|
|
24
|
-
return path
|
|
25
|
-
}
|
|
26
|
-
}
|
|
14
|
+
pg.holes = p.holes.toMapPolygonHoles()
|
|
27
15
|
p.zIndex.map { pg.zIndex = Int32($0) }
|
|
28
16
|
|
|
29
17
|
return pg
|
|
@@ -31,35 +19,12 @@ final class MapPolygonBuilder {
|
|
|
31
19
|
|
|
32
20
|
@MainActor
|
|
33
21
|
func update(_ prev: RNPolygon, _ next: RNPolygon, _ pg: GMSPolygon) {
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|| !zip(prev.coordinates, next.coordinates).allSatisfy {
|
|
37
|
-
$0.latitude == $1.latitude && $0.longitude == $1.longitude
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
if coordsChanged {
|
|
41
|
-
let path = GMSMutablePath()
|
|
42
|
-
next.coordinates.forEach { path.add($0.toCLLocationCoordinate2D()) }
|
|
43
|
-
pg.path = path
|
|
22
|
+
if !prev.coordinatesEquals(next) {
|
|
23
|
+
pg.path = next.coordinates.toGMSPath()
|
|
44
24
|
}
|
|
45
25
|
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
let holesChanged =
|
|
49
|
-
prevHoles.count != nextHoles.count
|
|
50
|
-
|| !zip(prevHoles, nextHoles).allSatisfy { a, b in
|
|
51
|
-
a.coordinates.count == b.coordinates.count
|
|
52
|
-
&& zip(a.coordinates, b.coordinates).allSatisfy {
|
|
53
|
-
$0.latitude == $1.latitude && $0.longitude == $1.longitude
|
|
54
|
-
}
|
|
55
|
-
}
|
|
56
|
-
|
|
57
|
-
if holesChanged {
|
|
58
|
-
pg.holes = nextHoles.map { hole in
|
|
59
|
-
let path = GMSMutablePath()
|
|
60
|
-
hole.coordinates.forEach { path.add($0.toCLLocationCoordinate2D()) }
|
|
61
|
-
return path
|
|
62
|
-
}
|
|
26
|
+
if !prev.holesEquals(next) {
|
|
27
|
+
pg.holes = next.holes.toMapPolygonHoles()
|
|
63
28
|
}
|
|
64
29
|
|
|
65
30
|
if prev.fillColor != next.fillColor {
|
|
@@ -25,16 +25,8 @@ final class MapPolylineBuilder {
|
|
|
25
25
|
|
|
26
26
|
@MainActor
|
|
27
27
|
func update(_ prev: RNPolyline, _ next: RNPolyline, _ pl: GMSPolyline) {
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|| !zip(prev.coordinates, next.coordinates).allSatisfy {
|
|
31
|
-
$0.latitude == $1.latitude && $0.longitude == $1.longitude
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
if coordsChanged {
|
|
35
|
-
let path = GMSMutablePath()
|
|
36
|
-
next.coordinates.forEach { path.add($0.toCLLocationCoordinate2D()) }
|
|
37
|
-
pl.path = path
|
|
28
|
+
if !prev.coordinatesEquals(next) {
|
|
29
|
+
pl.path = next.coordinates.toGMSPath()
|
|
38
30
|
}
|
|
39
31
|
|
|
40
32
|
if prev.width != next.width {
|
|
@@ -2,10 +2,19 @@ import GoogleMaps
|
|
|
2
2
|
|
|
3
3
|
extension RNCircle {
|
|
4
4
|
func circleEquals(_ b: RNCircle) -> Bool {
|
|
5
|
-
zIndex
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
5
|
+
if zIndex != b.zIndex { return false }
|
|
6
|
+
if pressable != b.pressable { return false }
|
|
7
|
+
if !centerEquals(b) { return false }
|
|
8
|
+
if radius != b.radius { return false }
|
|
9
|
+
if strokeWidth != b.strokeWidth { return false }
|
|
10
|
+
if strokeColor != b.strokeColor { return false }
|
|
11
|
+
if fillColor != b.fillColor { return false }
|
|
12
|
+
return true
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
func centerEquals(_ b: RNCircle) -> Bool {
|
|
16
|
+
if center.latitude != b.center.latitude { return false }
|
|
17
|
+
if center.longitude != b.center.longitude { return false }
|
|
18
|
+
return true
|
|
10
19
|
}
|
|
11
20
|
}
|
|
@@ -1,7 +1,18 @@
|
|
|
1
1
|
import CoreLocation
|
|
2
|
+
import GoogleMaps
|
|
2
3
|
|
|
3
4
|
extension RNLatLng {
|
|
4
5
|
func toCLLocationCoordinate2D() -> CLLocationCoordinate2D {
|
|
5
6
|
CLLocationCoordinate2D(latitude: latitude, longitude: longitude)
|
|
6
7
|
}
|
|
7
8
|
}
|
|
9
|
+
|
|
10
|
+
extension Array where Element == RNLatLng {
|
|
11
|
+
func toGMSPath() -> GMSPath {
|
|
12
|
+
let path = GMSMutablePath()
|
|
13
|
+
for coord in self {
|
|
14
|
+
path.add(coord.toCLLocationCoordinate2D())
|
|
15
|
+
}
|
|
16
|
+
return path
|
|
17
|
+
}
|
|
18
|
+
}
|
|
@@ -2,21 +2,52 @@ import GoogleMaps
|
|
|
2
2
|
|
|
3
3
|
extension RNMarker {
|
|
4
4
|
func markerEquals(_ b: RNMarker) -> Bool {
|
|
5
|
-
id
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
5
|
+
if id != b.id { return false }
|
|
6
|
+
if zIndex != b.zIndex { return false }
|
|
7
|
+
if !coordinateEquals(b) { return false }
|
|
8
|
+
if !anchorEquals(b) { return false }
|
|
9
|
+
if title != b.title { return false }
|
|
10
|
+
if snippet != b.snippet { return false }
|
|
11
|
+
if opacity != b.opacity { return false }
|
|
12
|
+
if flat != b.flat { return false }
|
|
13
|
+
if draggable != b.draggable { return false }
|
|
14
|
+
if rotation != b.rotation { return false }
|
|
15
|
+
if !infoWindowAnchorEquals(b) { return false }
|
|
16
|
+
if !markerInfoWindowStyleEquals(b) { return false }
|
|
17
|
+
if !markerStyleEquals(b) { return false }
|
|
18
|
+
return true
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
func coordinateEquals(_ b: RNMarker) -> Bool {
|
|
22
|
+
if coordinate.latitude != b.coordinate.latitude { return false }
|
|
23
|
+
if coordinate.longitude != b.coordinate.longitude { return false }
|
|
24
|
+
return true
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
func anchorEquals(_ b: RNMarker) -> Bool {
|
|
28
|
+
if anchor?.x != b.anchor?.x { return false }
|
|
29
|
+
if anchor?.y != b.anchor?.y { return false }
|
|
30
|
+
return true
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
func infoWindowAnchorEquals(_ b: RNMarker) -> Bool {
|
|
34
|
+
if infoWindowAnchor?.x != b.infoWindowAnchor?.x { return false }
|
|
35
|
+
if infoWindowAnchor?.y != b.infoWindowAnchor?.y { return false }
|
|
36
|
+
return true
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
func markerInfoWindowStyleEquals(_ b: RNMarker) -> Bool {
|
|
40
|
+
if infoWindowIconSvg?.width != b.infoWindowIconSvg?.width { return false }
|
|
41
|
+
if infoWindowIconSvg?.height != b.infoWindowIconSvg?.height { return false }
|
|
42
|
+
if infoWindowIconSvg?.svgString != b.infoWindowIconSvg?.svgString { return false }
|
|
43
|
+
return true
|
|
15
44
|
}
|
|
16
45
|
|
|
17
46
|
func markerStyleEquals(_ b: RNMarker) -> Bool {
|
|
18
|
-
iconSvg?.width
|
|
19
|
-
|
|
47
|
+
if iconSvg?.width != b.iconSvg?.width { return false }
|
|
48
|
+
if iconSvg?.height != b.iconSvg?.height { return false }
|
|
49
|
+
if iconSvg?.svgString != b.iconSvg?.svgString { return false }
|
|
50
|
+
return true
|
|
20
51
|
}
|
|
21
52
|
|
|
22
53
|
func styleHash() -> NSNumber {
|
|
@@ -2,32 +2,48 @@ import GoogleMaps
|
|
|
2
2
|
|
|
3
3
|
extension RNPolygon {
|
|
4
4
|
func polygonEquals(_ b: RNPolygon) -> Bool {
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
5
|
+
if zIndex != b.zIndex { return false }
|
|
6
|
+
if pressable != b.pressable { return false }
|
|
7
|
+
if strokeWidth != b.strokeWidth { return false }
|
|
8
|
+
if fillColor != b.fillColor { return false }
|
|
9
|
+
if strokeColor != b.strokeColor { return false }
|
|
10
|
+
if geodesic != b.geodesic { return false }
|
|
11
|
+
|
|
12
|
+
if !coordinatesEquals(b) { return false }
|
|
13
|
+
if !holesEquals(b) { return false }
|
|
14
|
+
|
|
15
|
+
return true
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
func coordinatesEquals(_ b: RNPolygon) -> Bool {
|
|
19
|
+
if coordinates.count != b.coordinates.count { return false }
|
|
20
|
+
|
|
21
|
+
for (a, c) in zip(coordinates, b.coordinates) {
|
|
22
|
+
if a.latitude != c.latitude || a.longitude != c.longitude {
|
|
18
23
|
return false
|
|
19
24
|
}
|
|
20
25
|
}
|
|
21
26
|
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
27
|
+
return true
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
func holesEquals(_ b: RNPolygon) -> Bool {
|
|
31
|
+
if let holes = holes, let bHoles = b.holes {
|
|
32
|
+
if holes.count != bHoles.count { return false }
|
|
26
33
|
|
|
27
|
-
for
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
34
|
+
for i in holes.indices {
|
|
35
|
+
let ah = holes[i]
|
|
36
|
+
let bh = bHoles[i]
|
|
37
|
+
|
|
38
|
+
if ah.coordinates.count != bh.coordinates.count { return false }
|
|
39
|
+
|
|
40
|
+
for j in ah.coordinates.indices {
|
|
41
|
+
let p = ah.coordinates[j]
|
|
42
|
+
let q = bh.coordinates[j]
|
|
43
|
+
|
|
44
|
+
if p.latitude != q.latitude || p.longitude != q.longitude {
|
|
45
|
+
return false
|
|
46
|
+
}
|
|
31
47
|
}
|
|
32
48
|
}
|
|
33
49
|
}
|
|
@@ -35,3 +51,16 @@ extension RNPolygon {
|
|
|
35
51
|
return true
|
|
36
52
|
}
|
|
37
53
|
}
|
|
54
|
+
|
|
55
|
+
extension Optional where Wrapped == [RNPolygonHole] {
|
|
56
|
+
func toMapPolygonHoles() -> [GMSPath]? {
|
|
57
|
+
guard let holes = self else { return nil }
|
|
58
|
+
return holes.map { hole in
|
|
59
|
+
let path = GMSMutablePath()
|
|
60
|
+
hole.coordinates.forEach { coord in
|
|
61
|
+
path.add(coord.toCLLocationCoordinate2D())
|
|
62
|
+
}
|
|
63
|
+
return path
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
}
|
|
@@ -2,37 +2,26 @@ import GoogleMaps
|
|
|
2
2
|
|
|
3
3
|
extension RNPolyline {
|
|
4
4
|
func polylineEquals(_ b: RNPolyline) -> Bool {
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
else { return false }
|
|
5
|
+
if zIndex != b.zIndex { return false }
|
|
6
|
+
if width != b.width { return false }
|
|
7
|
+
if lineCap != b.lineCap { return false }
|
|
8
|
+
if lineJoin != b.lineJoin { return false }
|
|
9
|
+
if color != b.color { return false }
|
|
10
|
+
if geodesic != b.geodesic { return false }
|
|
11
|
+
if !coordinatesEquals(b) { return false }
|
|
13
12
|
|
|
14
|
-
for i in 0..<coordinates.count {
|
|
15
|
-
if coordinates[i].latitude != b.coordinates[i].latitude
|
|
16
|
-
|| coordinates[i].longitude != b.coordinates[i].longitude {
|
|
17
|
-
return false
|
|
18
|
-
}
|
|
19
|
-
}
|
|
20
13
|
return true
|
|
21
14
|
}
|
|
22
15
|
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
case .round: return .round
|
|
26
|
-
case .square: return .square
|
|
27
|
-
default: return .butt
|
|
28
|
-
}
|
|
29
|
-
}
|
|
16
|
+
func coordinatesEquals(_ b: RNPolyline) -> Bool {
|
|
17
|
+
if coordinates.count != b.coordinates.count { return false }
|
|
30
18
|
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
default: return .miter
|
|
19
|
+
for (a, c) in zip(coordinates, b.coordinates) {
|
|
20
|
+
if a.latitude != c.latitude || a.longitude != c.longitude {
|
|
21
|
+
return false
|
|
22
|
+
}
|
|
36
23
|
}
|
|
24
|
+
|
|
25
|
+
return true
|
|
37
26
|
}
|
|
38
27
|
}
|
package/lib/module/types.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["RNAndroidLocationPriority","RNIOSLocationAccuracy","RNAndroidLocationPermissionResult","RNIOSPermissionResult","RNLocationErrorCode","RNMapErrorCode"],"sourceRoot":"../../src","sources":["types.ts"],"mappings":";;AAmEA;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;;
|
|
1
|
+
{"version":3,"names":["RNAndroidLocationPriority","RNIOSLocationAccuracy","RNAndroidLocationPermissionResult","RNIOSPermissionResult","RNLocationErrorCode","RNMapErrorCode"],"sourceRoot":"../../src","sources":["types.ts"],"mappings":";;AAmEA;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;;AAwKA,WAAYA,yBAAyB,0BAAzBA,yBAAyB;EAAzBA,yBAAyB,CAAzBA,yBAAyB;EAAzBA,yBAAyB,CAAzBA,yBAAyB;EAAzBA,yBAAyB,CAAzBA,yBAAyB;EAAzBA,yBAAyB,CAAzBA,yBAAyB;EAAA,OAAzBA,yBAAyB;AAAA;AAYrC,WAAYC,qBAAqB,0BAArBA,qBAAqB;EAArBA,qBAAqB,CAArBA,qBAAqB;EAArBA,qBAAqB,CAArBA,qBAAqB;EAArBA,qBAAqB,CAArBA,qBAAqB;EAArBA,qBAAqB,CAArBA,qBAAqB;EAAA,OAArBA,qBAAqB;AAAA;AAYjC,WAAYC,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;AAoCjC,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":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/types.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,8BAA8B,CAAC;AAChF,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AAE7D,MAAM,MAAM,iBAAiB,GAAG,UAAU,CAAC,2BAA2B,CAAC,CAAC;AAExE,MAAM,MAAM,cAAc,GAAG;IAC3B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,MAAM,CAAC,EAAE,QAAQ,CAAC;IAClB,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG;IAC5B,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,wBAAwB,CAAC,EAAE,OAAO,CAAC;IACnC,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,uBAAuB,CAAC,EAAE,OAAO,CAAC;IAClC,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,+BAA+B,CAAC,EAAE,OAAO,CAAC;IAC1C,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,8BAA8B,CAAC,EAAE,OAAO,CAAC;CAC1C,CAAC;AAEF,MAAM,MAAM,QAAQ,GAAG;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG;IAC3B,SAAS,EAAE,QAAQ,CAAC;IACpB,SAAS,EAAE,QAAQ,CAAC;CACrB,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG;IAC9B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,gBAAgB,CAAC;IACzB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,oBAAoB,CAAC;CAClC,CAAC;AAEF,MAAM,MAAM,MAAM,GAAG;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG,KAAK,GAAG,KAAK,GAAG,MAAM,CAAC;AAEtD,MAAM,MAAM,oBAAoB,GAAG,QAAQ,GAAG,MAAM,CAAC;AAErD,MAAM,MAAM,YAAY,GAAG;IACzB,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;CACf,CAAC;AAEF,MAAM,MAAM,SAAS,GAAG,MAAM,GAAG,QAAQ,GAAG,QAAQ,GAAG,WAAW,GAAG,SAAS,CAAC;AAE/E,MAAM,MAAM,oBAAoB,GAAG,OAAO,GAAG,MAAM,GAAG,SAAS,CAAC;AAEhE,MAAM,MAAM,aAAa,GAAG,MAAM,CAAC;AA+BnC,MAAM,MAAM,aAAa,GAAG,MAAM,CAAC;AAcnC,MAAM,MAAM,YAAY,GAAG,MAAM,CAAC;AAMlC,MAAM,WAAW,WAAW;IAC1B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,YAAY,CAAC;IAC1B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC5B;AAED,MAAM,WAAW,iBAAiB;IAChC,WAAW,CAAC,EAAE,aAAa,CAAC;IAC5B,WAAW,CAAC,EAAE,aAAa,CAAC;IAC5B,OAAO,EAAE,WAAW,EAAE,CAAC;CACxB;AAED,MAAM,MAAM,QAAQ,GAAG;IACrB,MAAM,CAAC,EAAE,QAAQ,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf,CAAC;AAEF,MAAM,MAAM,QAAQ,GAAG;IACrB,QAAQ,EAAE,QAAQ,CAAC;IACnB,SAAS,EAAE,QAAQ,CAAC;IACpB,OAAO,EAAE,QAAQ,CAAC;IAClB,QAAQ,EAAE,QAAQ,CAAC;IACnB,YAAY,EAAE,cAAc,CAAC;CAC9B,CAAC;AAEF,MAAM,MAAM,UAAU,GAAG;IACvB,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;CACX,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG;IAC5B,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;CACd,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG,MAAM,GAAG,OAAO,GAAG,QAAQ,CAAC;AACxD,MAAM,MAAM,cAAc,GAAG,OAAO,GAAG,OAAO,GAAG,OAAO,CAAC;AAEzD,MAAM,MAAM,QAAQ,GAAG;IACrB,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,QAAQ,CAAC;IACrB,MAAM,CAAC,EAAE,UAAU,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,gBAAgB,CAAC,EAAE,UAAU,CAAC;IAC9B,OAAO,CAAC,EAAE,WAAW,CAAC;IACtB,iBAAiB,CAAC,EAAE,WAAW,CAAC;CACjC,CAAC;AAEF,MAAM,MAAM,WAAW,GAAG;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,MAAM,MAAM,SAAS,GAAG;IACtB,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,WAAW,EAAE,QAAQ,EAAE,CAAC;IACxB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,aAAa,EAAE,CAAC;IACxB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG;IAC1B,WAAW,EAAE,QAAQ,EAAE,CAAC;CACzB,CAAC;AAEF,MAAM,MAAM,UAAU,GAAG;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,WAAW,EAAE,QAAQ,EAAE,CAAC;IACxB,OAAO,CAAC,EAAE,aAAa,CAAC;IACxB,QAAQ,CAAC,EAAE,cAAc,CAAC;IAC1B,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,MAAM,MAAM,QAAQ,GAAG;IACrB,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,QAAQ,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,MAAM,MAAM,SAAS,GAAG;IACtB,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,cAAc,EAAE,CAAC;IAC/B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,iBAAiB,CAAC;CAC9B,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG;IAC3B,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG;IAC9B,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,YAAY,EAAE,MAAM,CAAC;CACtB,CAAC;AAEF,MAAM,MAAM,SAAS,GAAG;IACtB,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG;IAC7B,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,MAAM,EAAE,aAAa,EAAE,CAAC;IACxB,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG;IAC7B,OAAO,CAAC,EAAE,uBAAuB,CAAC;IAClC,GAAG,CAAC,EAAE,mBAAmB,CAAC;CAC3B,CAAC;AAEF,MAAM,MAAM,uBAAuB,GAAG;IACpC,QAAQ,CAAC,EAAE,yBAAyB,CAAC;IACrC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B,CAAC;AAEF,oBAAY,yBAAyB;IACnC,sBAAsB,IAAI;IAC1B,gCAAgC,IAAI;IACpC,kBAAkB,IAAI;IACtB,gBAAgB,IAAI;CACrB;AAED,MAAM,MAAM,mBAAmB,GAAG;IAChC,eAAe,CAAC,EAAE,qBAAqB,CAAC;IACxC,oBAAoB,CAAC,EAAE,MAAM,CAAC;CAC/B,CAAC;AAEF,oBAAY,qBAAqB;IAC/B,aAAa,IAAI;IACjB,0BAA0B,IAAI;IAC9B,8BAA8B,IAAI;IAClC,kBAAkB,IAAI;CACvB;AAED,MAAM,MAAM,0BAA0B,GAAG;IACvC,OAAO,CAAC,EAAE,iCAAiC,CAAC;IAC5C,GAAG,CAAC,EAAE,qBAAqB,CAAC;CAC7B,CAAC;AAEF,oBAAY,iCAAiC;IAC3C,OAAO,IAAI;IACX,MAAM,KAAK;IACX,eAAe,KAAK;CACrB;AAED,oBAAY,qBAAqB;IAC/B,MAAM,KAAK;IACX,UAAU,IAAI;CACf;AAED,MAAM,MAAM,UAAU,GAAG;IACvB,MAAM,EAAE,QAAQ,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,iBAAiB,CAAC;IAC5B,GAAG,CAAC,EAAE,aAAa,CAAC;CACrB,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG;IAC9B,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC,4BAA4B,CAAC,EAAE,MAAM,CAAC;IACtC,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,yBAAyB,CAAC,EAAE,MAAM,CAAC;IACnC,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB,CAAC;AACF,MAAM,MAAM,aAAa,GAAG;IAC1B,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,oBAAY,mBAAmB;IAC7B,iBAAiB,IAAI;IACrB,oBAAoB,IAAI;IACxB,OAAO,IAAI;IACX,0BAA0B,IAAI;IAC9B,sBAAsB,IAAI;IAC1B,cAAc,KAAK;CACpB;AAED,oBAAY,cAAc;IACxB,qBAAqB,IAAI;IACzB,qBAAqB,IAAI;IACzB,sBAAsB,IAAI;IAC1B,sBAAsB,IAAI;IAC1B,6BAA6B,IAAI;IACjC,qBAAqB,IAAI;IACzB,OAAO,IAAI;CACZ"}
|
|
@@ -46,8 +46,6 @@ namespace margelo::nitro::rngooglemapsplus {
|
|
|
46
46
|
jni::local_ref<JRNLatLng> coordinate = this->getFieldValue(fieldCoordinate);
|
|
47
47
|
static const auto fieldAnchor = clazz->getField<JRNPosition>("anchor");
|
|
48
48
|
jni::local_ref<JRNPosition> anchor = this->getFieldValue(fieldAnchor);
|
|
49
|
-
static const auto fieldShowInfoWindow = clazz->getField<jni::JBoolean>("showInfoWindow");
|
|
50
|
-
jni::local_ref<jni::JBoolean> showInfoWindow = this->getFieldValue(fieldShowInfoWindow);
|
|
51
49
|
static const auto fieldTitle = clazz->getField<jni::JString>("title");
|
|
52
50
|
jni::local_ref<jni::JString> title = this->getFieldValue(fieldTitle);
|
|
53
51
|
static const auto fieldSnippet = clazz->getField<jni::JString>("snippet");
|
|
@@ -71,7 +69,6 @@ namespace margelo::nitro::rngooglemapsplus {
|
|
|
71
69
|
zIndex != nullptr ? std::make_optional(zIndex->value()) : std::nullopt,
|
|
72
70
|
coordinate->toCpp(),
|
|
73
71
|
anchor != nullptr ? std::make_optional(anchor->toCpp()) : std::nullopt,
|
|
74
|
-
showInfoWindow != nullptr ? std::make_optional(static_cast<bool>(showInfoWindow->value())) : std::nullopt,
|
|
75
72
|
title != nullptr ? std::make_optional(title->toStdString()) : std::nullopt,
|
|
76
73
|
snippet != nullptr ? std::make_optional(snippet->toStdString()) : std::nullopt,
|
|
77
74
|
opacity != nullptr ? std::make_optional(opacity->value()) : std::nullopt,
|
|
@@ -90,7 +87,7 @@ namespace margelo::nitro::rngooglemapsplus {
|
|
|
90
87
|
*/
|
|
91
88
|
[[maybe_unused]]
|
|
92
89
|
static jni::local_ref<JRNMarker::javaobject> fromCpp(const RNMarker& value) {
|
|
93
|
-
using JSignature = JRNMarker(jni::alias_ref<jni::JString>, jni::alias_ref<jni::JDouble>, jni::alias_ref<JRNLatLng>, jni::alias_ref<JRNPosition>, jni::alias_ref<jni::
|
|
90
|
+
using JSignature = JRNMarker(jni::alias_ref<jni::JString>, jni::alias_ref<jni::JDouble>, jni::alias_ref<JRNLatLng>, jni::alias_ref<JRNPosition>, jni::alias_ref<jni::JString>, jni::alias_ref<jni::JString>, jni::alias_ref<jni::JDouble>, jni::alias_ref<jni::JBoolean>, jni::alias_ref<jni::JBoolean>, jni::alias_ref<jni::JDouble>, jni::alias_ref<JRNPosition>, jni::alias_ref<JRNMarkerSvg>, jni::alias_ref<JRNMarkerSvg>);
|
|
94
91
|
static const auto clazz = javaClassStatic();
|
|
95
92
|
static const auto create = clazz->getStaticMethod<JSignature>("fromCpp");
|
|
96
93
|
return create(
|
|
@@ -99,7 +96,6 @@ namespace margelo::nitro::rngooglemapsplus {
|
|
|
99
96
|
value.zIndex.has_value() ? jni::JDouble::valueOf(value.zIndex.value()) : nullptr,
|
|
100
97
|
JRNLatLng::fromCpp(value.coordinate),
|
|
101
98
|
value.anchor.has_value() ? JRNPosition::fromCpp(value.anchor.value()) : nullptr,
|
|
102
|
-
value.showInfoWindow.has_value() ? jni::JBoolean::valueOf(value.showInfoWindow.value()) : nullptr,
|
|
103
99
|
value.title.has_value() ? jni::make_jstring(value.title.value()) : nullptr,
|
|
104
100
|
value.snippet.has_value() ? jni::make_jstring(value.snippet.value()) : nullptr,
|
|
105
101
|
value.opacity.has_value() ? jni::JDouble::valueOf(value.opacity.value()) : nullptr,
|
|
@@ -32,9 +32,6 @@ data class RNMarker(
|
|
|
32
32
|
val anchor: RNPosition?,
|
|
33
33
|
@DoNotStrip
|
|
34
34
|
@Keep
|
|
35
|
-
val showInfoWindow: Boolean?,
|
|
36
|
-
@DoNotStrip
|
|
37
|
-
@Keep
|
|
38
35
|
val title: String?,
|
|
39
36
|
@DoNotStrip
|
|
40
37
|
@Keep
|
|
@@ -69,8 +66,8 @@ data class RNMarker(
|
|
|
69
66
|
@Keep
|
|
70
67
|
@Suppress("unused")
|
|
71
68
|
@JvmStatic
|
|
72
|
-
private fun fromCpp(id: String, zIndex: Double?, coordinate: RNLatLng, anchor: RNPosition?,
|
|
73
|
-
return RNMarker(id, zIndex, coordinate, anchor,
|
|
69
|
+
private fun fromCpp(id: String, zIndex: Double?, coordinate: RNLatLng, anchor: RNPosition?, title: String?, snippet: String?, opacity: Double?, flat: Boolean?, draggable: Boolean?, rotation: Double?, infoWindowAnchor: RNPosition?, iconSvg: RNMarkerSvg?, infoWindowIconSvg: RNMarkerSvg?): RNMarker {
|
|
70
|
+
return RNMarker(id, zIndex, coordinate, anchor, title, snippet, opacity, flat, draggable, rotation, infoWindowAnchor, iconSvg, infoWindowIconSvg)
|
|
74
71
|
}
|
|
75
72
|
}
|
|
76
73
|
}
|
|
@@ -18,7 +18,7 @@ public extension RNMarker {
|
|
|
18
18
|
/**
|
|
19
19
|
* Create a new instance of `RNMarker`.
|
|
20
20
|
*/
|
|
21
|
-
init(id: String, zIndex: Double?, coordinate: RNLatLng, anchor: RNPosition?,
|
|
21
|
+
init(id: String, zIndex: Double?, coordinate: RNLatLng, anchor: RNPosition?, title: String?, snippet: String?, opacity: Double?, flat: Bool?, draggable: Bool?, rotation: Double?, infoWindowAnchor: RNPosition?, iconSvg: RNMarkerSvg?, infoWindowIconSvg: RNMarkerSvg?) {
|
|
22
22
|
self.init(std.string(id), { () -> bridge.std__optional_double_ in
|
|
23
23
|
if let __unwrappedValue = zIndex {
|
|
24
24
|
return bridge.create_std__optional_double_(__unwrappedValue)
|
|
@@ -31,12 +31,6 @@ public extension RNMarker {
|
|
|
31
31
|
} else {
|
|
32
32
|
return .init()
|
|
33
33
|
}
|
|
34
|
-
}(), { () -> bridge.std__optional_bool_ in
|
|
35
|
-
if let __unwrappedValue = showInfoWindow {
|
|
36
|
-
return bridge.create_std__optional_bool_(__unwrappedValue)
|
|
37
|
-
} else {
|
|
38
|
-
return .init()
|
|
39
|
-
}
|
|
40
34
|
}(), { () -> bridge.std__optional_std__string_ in
|
|
41
35
|
if let __unwrappedValue = title {
|
|
42
36
|
return bridge.create_std__optional_std__string_(std.string(__unwrappedValue))
|
|
@@ -150,30 +144,6 @@ public extension RNMarker {
|
|
|
150
144
|
}
|
|
151
145
|
}
|
|
152
146
|
|
|
153
|
-
var showInfoWindow: Bool? {
|
|
154
|
-
@inline(__always)
|
|
155
|
-
get {
|
|
156
|
-
return { () -> Bool? in
|
|
157
|
-
if bridge.has_value_std__optional_bool_(self.__showInfoWindow) {
|
|
158
|
-
let __unwrapped = bridge.get_std__optional_bool_(self.__showInfoWindow)
|
|
159
|
-
return __unwrapped
|
|
160
|
-
} else {
|
|
161
|
-
return nil
|
|
162
|
-
}
|
|
163
|
-
}()
|
|
164
|
-
}
|
|
165
|
-
@inline(__always)
|
|
166
|
-
set {
|
|
167
|
-
self.__showInfoWindow = { () -> bridge.std__optional_bool_ in
|
|
168
|
-
if let __unwrappedValue = newValue {
|
|
169
|
-
return bridge.create_std__optional_bool_(__unwrappedValue)
|
|
170
|
-
} else {
|
|
171
|
-
return .init()
|
|
172
|
-
}
|
|
173
|
-
}()
|
|
174
|
-
}
|
|
175
|
-
}
|
|
176
|
-
|
|
177
147
|
var title: String? {
|
|
178
148
|
@inline(__always)
|
|
179
149
|
get {
|
|
@@ -47,7 +47,6 @@ namespace margelo::nitro::rngooglemapsplus {
|
|
|
47
47
|
std::optional<double> zIndex SWIFT_PRIVATE;
|
|
48
48
|
RNLatLng coordinate SWIFT_PRIVATE;
|
|
49
49
|
std::optional<RNPosition> anchor SWIFT_PRIVATE;
|
|
50
|
-
std::optional<bool> showInfoWindow SWIFT_PRIVATE;
|
|
51
50
|
std::optional<std::string> title SWIFT_PRIVATE;
|
|
52
51
|
std::optional<std::string> snippet SWIFT_PRIVATE;
|
|
53
52
|
std::optional<double> opacity SWIFT_PRIVATE;
|
|
@@ -60,7 +59,7 @@ namespace margelo::nitro::rngooglemapsplus {
|
|
|
60
59
|
|
|
61
60
|
public:
|
|
62
61
|
RNMarker() = default;
|
|
63
|
-
explicit RNMarker(std::string id, std::optional<double> zIndex, RNLatLng coordinate, std::optional<RNPosition> anchor, std::optional<
|
|
62
|
+
explicit RNMarker(std::string id, std::optional<double> zIndex, RNLatLng coordinate, std::optional<RNPosition> anchor, std::optional<std::string> title, std::optional<std::string> snippet, std::optional<double> opacity, std::optional<bool> flat, std::optional<bool> draggable, std::optional<double> rotation, std::optional<RNPosition> infoWindowAnchor, std::optional<RNMarkerSvg> iconSvg, std::optional<RNMarkerSvg> infoWindowIconSvg): id(id), zIndex(zIndex), coordinate(coordinate), anchor(anchor), title(title), snippet(snippet), opacity(opacity), flat(flat), draggable(draggable), rotation(rotation), infoWindowAnchor(infoWindowAnchor), iconSvg(iconSvg), infoWindowIconSvg(infoWindowIconSvg) {}
|
|
64
63
|
};
|
|
65
64
|
|
|
66
65
|
} // namespace margelo::nitro::rngooglemapsplus
|
|
@@ -77,7 +76,6 @@ namespace margelo::nitro {
|
|
|
77
76
|
JSIConverter<std::optional<double>>::fromJSI(runtime, obj.getProperty(runtime, "zIndex")),
|
|
78
77
|
JSIConverter<margelo::nitro::rngooglemapsplus::RNLatLng>::fromJSI(runtime, obj.getProperty(runtime, "coordinate")),
|
|
79
78
|
JSIConverter<std::optional<margelo::nitro::rngooglemapsplus::RNPosition>>::fromJSI(runtime, obj.getProperty(runtime, "anchor")),
|
|
80
|
-
JSIConverter<std::optional<bool>>::fromJSI(runtime, obj.getProperty(runtime, "showInfoWindow")),
|
|
81
79
|
JSIConverter<std::optional<std::string>>::fromJSI(runtime, obj.getProperty(runtime, "title")),
|
|
82
80
|
JSIConverter<std::optional<std::string>>::fromJSI(runtime, obj.getProperty(runtime, "snippet")),
|
|
83
81
|
JSIConverter<std::optional<double>>::fromJSI(runtime, obj.getProperty(runtime, "opacity")),
|
|
@@ -95,7 +93,6 @@ namespace margelo::nitro {
|
|
|
95
93
|
obj.setProperty(runtime, "zIndex", JSIConverter<std::optional<double>>::toJSI(runtime, arg.zIndex));
|
|
96
94
|
obj.setProperty(runtime, "coordinate", JSIConverter<margelo::nitro::rngooglemapsplus::RNLatLng>::toJSI(runtime, arg.coordinate));
|
|
97
95
|
obj.setProperty(runtime, "anchor", JSIConverter<std::optional<margelo::nitro::rngooglemapsplus::RNPosition>>::toJSI(runtime, arg.anchor));
|
|
98
|
-
obj.setProperty(runtime, "showInfoWindow", JSIConverter<std::optional<bool>>::toJSI(runtime, arg.showInfoWindow));
|
|
99
96
|
obj.setProperty(runtime, "title", JSIConverter<std::optional<std::string>>::toJSI(runtime, arg.title));
|
|
100
97
|
obj.setProperty(runtime, "snippet", JSIConverter<std::optional<std::string>>::toJSI(runtime, arg.snippet));
|
|
101
98
|
obj.setProperty(runtime, "opacity", JSIConverter<std::optional<double>>::toJSI(runtime, arg.opacity));
|
|
@@ -119,7 +116,6 @@ namespace margelo::nitro {
|
|
|
119
116
|
if (!JSIConverter<std::optional<double>>::canConvert(runtime, obj.getProperty(runtime, "zIndex"))) return false;
|
|
120
117
|
if (!JSIConverter<margelo::nitro::rngooglemapsplus::RNLatLng>::canConvert(runtime, obj.getProperty(runtime, "coordinate"))) return false;
|
|
121
118
|
if (!JSIConverter<std::optional<margelo::nitro::rngooglemapsplus::RNPosition>>::canConvert(runtime, obj.getProperty(runtime, "anchor"))) return false;
|
|
122
|
-
if (!JSIConverter<std::optional<bool>>::canConvert(runtime, obj.getProperty(runtime, "showInfoWindow"))) return false;
|
|
123
119
|
if (!JSIConverter<std::optional<std::string>>::canConvert(runtime, obj.getProperty(runtime, "title"))) return false;
|
|
124
120
|
if (!JSIConverter<std::optional<std::string>>::canConvert(runtime, obj.getProperty(runtime, "snippet"))) return false;
|
|
125
121
|
if (!JSIConverter<std::optional<double>>::canConvert(runtime, obj.getProperty(runtime, "opacity"))) return false;
|
package/package.json
CHANGED