react-native-google-maps-plus 1.1.0-dev.1 → 1.1.0-dev.3
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/RNGoogleMapsPlus.podspec +2 -0
- package/android/src/main/java/com/rngooglemapsplus/GoogleMapsViewImpl.kt +38 -103
- package/android/src/main/java/com/rngooglemapsplus/LocationHandler.kt +3 -3
- package/android/src/main/java/com/rngooglemapsplus/MapCircleBuilder.kt +16 -2
- package/android/src/main/java/com/rngooglemapsplus/MapMarkerBuilder.kt +48 -27
- package/android/src/main/java/com/rngooglemapsplus/MapPolygonBuilder.kt +18 -1
- package/android/src/main/java/com/rngooglemapsplus/MapPolylineBuilder.kt.kt +26 -9
- package/android/src/main/java/com/rngooglemapsplus/RNGoogleMapsPlusView.kt +48 -72
- package/android/src/main/java/com/rngooglemapsplus/extensions/RNMarkerExtension.kt +17 -0
- package/ios/GoogleMapViewImpl.swift +94 -212
- package/ios/LocationHandler.swift +2 -10
- package/ios/MapCircleBuilder.swift +23 -8
- package/ios/MapHelper.swift +6 -4
- package/ios/MapMarkerBuilder.swift +55 -48
- package/ios/MapPolygonBuilder.swift +25 -7
- package/ios/MapPolylineBuilder.swift +27 -11
- package/ios/RNGoogleMapsPlusView.swift +9 -15
- package/ios/extensions/RNCircle+Extension.swift +0 -13
- package/ios/extensions/RNMarker+Extension.swift +6 -5
- package/ios/extensions/RNPolygon+Extension.swift.swift +2 -19
- package/ios/extensions/RNPolyline+Extension.swift.swift +1 -26
- package/lib/module/types.js.map +1 -1
- package/lib/typescript/src/RNGoogleMapsPlusView.nitro.d.ts +2 -3
- package/lib/typescript/src/RNGoogleMapsPlusView.nitro.d.ts.map +1 -1
- package/lib/typescript/src/types.d.ts +9 -2
- package/lib/typescript/src/types.d.ts.map +1 -1
- package/nitrogen/generated/android/c++/JHybridRNGoogleMapsPlusViewSpec.cpp +14 -15
- package/nitrogen/generated/android/c++/JHybridRNGoogleMapsPlusViewSpec.hpp +2 -4
- package/nitrogen/generated/android/c++/JRNCircle.hpp +4 -4
- package/nitrogen/generated/android/c++/JRNMapZoomConfig.hpp +57 -0
- package/nitrogen/generated/android/c++/JRNMarker.hpp +6 -12
- package/nitrogen/generated/android/c++/JRNMarkerSvg.hpp +61 -0
- package/nitrogen/generated/android/c++/views/JHybridRNGoogleMapsPlusViewStateUpdater.cpp +2 -6
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/rngooglemapsplus/HybridRNGoogleMapsPlusViewSpec.kt +1 -7
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/rngooglemapsplus/RNCircle.kt +1 -1
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/rngooglemapsplus/RNMapZoomConfig.kt +32 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/rngooglemapsplus/RNMarker.kt +1 -7
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/rngooglemapsplus/RNMarkerSvg.kt +35 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/rngooglemapsplus/views/HybridRNGoogleMapsPlusViewManager.kt +1 -1
- package/nitrogen/generated/ios/RNGoogleMapsPlus-Swift-Cxx-Bridge.cpp +13 -13
- package/nitrogen/generated/ios/RNGoogleMapsPlus-Swift-Cxx-Bridge.hpp +75 -33
- package/nitrogen/generated/ios/RNGoogleMapsPlus-Swift-Cxx-Umbrella.hpp +6 -0
- package/nitrogen/generated/ios/c++/HybridRNGoogleMapsPlusViewSpecSwift.hpp +11 -12
- package/nitrogen/generated/ios/c++/views/HybridRNGoogleMapsPlusViewComponent.mm +4 -9
- package/nitrogen/generated/ios/swift/HybridRNGoogleMapsPlusViewSpec.swift +1 -2
- package/nitrogen/generated/ios/swift/HybridRNGoogleMapsPlusViewSpec_cxx.swift +46 -94
- package/nitrogen/generated/ios/swift/RNCamera.swift +1 -8
- package/nitrogen/generated/ios/swift/RNCircle.swift +5 -17
- package/nitrogen/generated/ios/swift/RNInitialProps.swift +1 -8
- package/nitrogen/generated/ios/swift/RNLocationConfig.swift +2 -16
- package/nitrogen/generated/ios/swift/RNMapZoomConfig.swift +70 -0
- package/nitrogen/generated/ios/swift/RNMarker.swift +18 -35
- package/nitrogen/generated/ios/swift/RNMarkerSvg.swift +57 -0
- package/nitrogen/generated/ios/swift/RNPolygon.swift +11 -15
- package/nitrogen/generated/ios/swift/RNPolyline.swift +11 -15
- package/nitrogen/generated/shared/c++/HybridRNGoogleMapsPlusViewSpec.cpp +2 -4
- package/nitrogen/generated/shared/c++/HybridRNGoogleMapsPlusViewSpec.hpp +5 -4
- package/nitrogen/generated/shared/c++/RNCircle.hpp +5 -5
- package/nitrogen/generated/shared/c++/RNMapZoomConfig.hpp +71 -0
- package/nitrogen/generated/shared/c++/RNMarker.hpp +8 -13
- package/nitrogen/generated/shared/c++/RNMarkerSvg.hpp +75 -0
- package/nitrogen/generated/shared/c++/views/HybridRNGoogleMapsPlusViewComponent.cpp +7 -19
- package/nitrogen/generated/shared/c++/views/HybridRNGoogleMapsPlusViewComponent.hpp +2 -2
- package/nitrogen/generated/shared/json/RNGoogleMapsPlusViewConfig.json +1 -2
- package/package.json +13 -13
- package/src/RNGoogleMapsPlusView.nitro.ts +2 -2
- package/src/types.ts +11 -2
|
@@ -2,16 +2,14 @@ package com.rngooglemapsplus
|
|
|
2
2
|
|
|
3
3
|
import com.facebook.proguard.annotations.DoNotStrip
|
|
4
4
|
import com.facebook.react.bridge.UiThreadUtil
|
|
5
|
-
import com.facebook.react.uimanager.PixelUtil.dpToPx
|
|
6
5
|
import com.facebook.react.uimanager.ThemedReactContext
|
|
7
|
-
import com.google.android.gms.maps.model.LatLng
|
|
8
6
|
import com.google.android.gms.maps.model.MapStyleOptions
|
|
9
7
|
import com.margelo.nitro.core.Promise
|
|
10
8
|
import com.rngooglemapsplus.extensions.circleEquals
|
|
9
|
+
import com.rngooglemapsplus.extensions.markerEquals
|
|
11
10
|
import com.rngooglemapsplus.extensions.polygonEquals
|
|
12
11
|
import com.rngooglemapsplus.extensions.polylineEquals
|
|
13
12
|
import com.rngooglemapsplus.extensions.toCameraPosition
|
|
14
|
-
import com.rngooglemapsplus.extensions.toColor
|
|
15
13
|
import com.rngooglemapsplus.extensions.toMapColorScheme
|
|
16
14
|
|
|
17
15
|
@DoNotStrip
|
|
@@ -23,7 +21,7 @@ class RNGoogleMapsPlusView(
|
|
|
23
21
|
private var locationHandler = LocationHandler(context)
|
|
24
22
|
private var playServiceHandler = PlayServicesHandler(context)
|
|
25
23
|
|
|
26
|
-
private val markerBuilder =
|
|
24
|
+
private val markerBuilder = MapMarkerBuilder()
|
|
27
25
|
private val polylineBuilder = MapPolylineBuilder()
|
|
28
26
|
private val polygonBuilder = MapPolygonBuilder()
|
|
29
27
|
private val circleBuilder = MapCircleBuilder()
|
|
@@ -33,6 +31,8 @@ class RNGoogleMapsPlusView(
|
|
|
33
31
|
|
|
34
32
|
override var initialProps: RNInitialProps? = null
|
|
35
33
|
set(value) {
|
|
34
|
+
if (field == value) return
|
|
35
|
+
field = value
|
|
36
36
|
view.initMapView(
|
|
37
37
|
value?.mapId,
|
|
38
38
|
value?.liteMode,
|
|
@@ -42,31 +42,43 @@ class RNGoogleMapsPlusView(
|
|
|
42
42
|
|
|
43
43
|
override var uiSettings: RNMapUiSettings? = null
|
|
44
44
|
set(value) {
|
|
45
|
+
if (field == value) return
|
|
46
|
+
field = value
|
|
45
47
|
view.uiSettings = value
|
|
46
48
|
}
|
|
47
49
|
|
|
48
50
|
override var myLocationEnabled: Boolean? = null
|
|
49
51
|
set(value) {
|
|
52
|
+
if (field == value) return
|
|
53
|
+
field = value
|
|
50
54
|
view.myLocationEnabled = value
|
|
51
55
|
}
|
|
52
56
|
|
|
53
57
|
override var buildingEnabled: Boolean? = null
|
|
54
58
|
set(value) {
|
|
59
|
+
if (field == value) return
|
|
60
|
+
field = value
|
|
55
61
|
view.buildingEnabled = value
|
|
56
62
|
}
|
|
57
63
|
|
|
58
64
|
override var trafficEnabled: Boolean? = null
|
|
59
65
|
set(value) {
|
|
66
|
+
if (field == value) return
|
|
67
|
+
field = value
|
|
60
68
|
view.trafficEnabled = value
|
|
61
69
|
}
|
|
62
70
|
|
|
63
71
|
override var indoorEnabled: Boolean? = null
|
|
64
72
|
set(value) {
|
|
73
|
+
if (field == value) return
|
|
74
|
+
field = value
|
|
65
75
|
view.indoorEnabled = value
|
|
66
76
|
}
|
|
67
77
|
|
|
68
78
|
override var customMapStyle: String? = null
|
|
69
79
|
set(value) {
|
|
80
|
+
if (field == value) return
|
|
81
|
+
field = value
|
|
70
82
|
currentCustomMapStyle = value
|
|
71
83
|
value?.let {
|
|
72
84
|
view.customMapStyle = MapStyleOptions(it)
|
|
@@ -75,26 +87,29 @@ class RNGoogleMapsPlusView(
|
|
|
75
87
|
|
|
76
88
|
override var userInterfaceStyle: RNUserInterfaceStyle? = null
|
|
77
89
|
set(value) {
|
|
90
|
+
if (field == value) return
|
|
91
|
+
field = value
|
|
78
92
|
view.userInterfaceStyle = value.toMapColorScheme()
|
|
79
93
|
}
|
|
80
94
|
|
|
81
|
-
override var
|
|
82
|
-
set(value) {
|
|
83
|
-
view.minZoomLevel = value
|
|
84
|
-
}
|
|
85
|
-
|
|
86
|
-
override var maxZoomLevel: Double? = null
|
|
95
|
+
override var mapZoomConfig: RNMapZoomConfig? = null
|
|
87
96
|
set(value) {
|
|
88
|
-
|
|
97
|
+
if (field == value) return
|
|
98
|
+
field = value
|
|
99
|
+
view.mapZoomConfig = value
|
|
89
100
|
}
|
|
90
101
|
|
|
91
102
|
override var mapPadding: RNMapPadding? = null
|
|
92
103
|
set(value) {
|
|
104
|
+
if (field == value) return
|
|
105
|
+
field = value
|
|
93
106
|
view.mapPadding = value
|
|
94
107
|
}
|
|
95
108
|
|
|
96
109
|
override var mapType: RNMapType? = null
|
|
97
110
|
set(value) {
|
|
111
|
+
if (field == value) return
|
|
112
|
+
field = value
|
|
98
113
|
value?.let {
|
|
99
114
|
view.mapType = it.value
|
|
100
115
|
}
|
|
@@ -102,8 +117,10 @@ class RNGoogleMapsPlusView(
|
|
|
102
117
|
|
|
103
118
|
override var markers: Array<RNMarker>? = null
|
|
104
119
|
set(value) {
|
|
120
|
+
if (field.contentEquals(value)) return
|
|
105
121
|
val prevById = field?.associateBy { it.id } ?: emptyMap()
|
|
106
122
|
val nextById = value?.associateBy { it.id } ?: emptyMap()
|
|
123
|
+
field = value
|
|
107
124
|
|
|
108
125
|
(prevById.keys - nextById.keys).forEach { id ->
|
|
109
126
|
markerBuilder.cancelIconJob(id)
|
|
@@ -120,38 +137,21 @@ class RNGoogleMapsPlusView(
|
|
|
120
137
|
)
|
|
121
138
|
}
|
|
122
139
|
} else if (!prev.markerEquals(next)) {
|
|
123
|
-
view.updateMarker(id) {
|
|
140
|
+
view.updateMarker(id) { marker ->
|
|
124
141
|
onUi {
|
|
125
|
-
|
|
126
|
-
LatLng(
|
|
127
|
-
next.coordinate.latitude,
|
|
128
|
-
next.coordinate.longitude,
|
|
129
|
-
)
|
|
130
|
-
next.zIndex?.let { m.zIndex = it.toFloat() } ?: run {
|
|
131
|
-
m.zIndex = 0f
|
|
132
|
-
}
|
|
133
|
-
|
|
134
|
-
if (!prev.markerStyleEquals(next)) {
|
|
135
|
-
markerBuilder.buildIconAsync(id, next) { icon ->
|
|
136
|
-
m.setIcon(icon)
|
|
137
|
-
}
|
|
138
|
-
}
|
|
139
|
-
m.setAnchor(
|
|
140
|
-
(next.anchor?.x ?: 0.5).toFloat(),
|
|
141
|
-
(next.anchor?.y ?: 0.5).toFloat(),
|
|
142
|
-
)
|
|
142
|
+
markerBuilder.update(marker, next, prev)
|
|
143
143
|
}
|
|
144
144
|
}
|
|
145
145
|
}
|
|
146
146
|
}
|
|
147
|
-
field = value
|
|
148
147
|
}
|
|
149
148
|
|
|
150
149
|
override var polylines: Array<RNPolyline>? = null
|
|
151
150
|
set(value) {
|
|
151
|
+
if (field.contentEquals(value)) return
|
|
152
152
|
val prevById = field?.associateBy { it.id } ?: emptyMap()
|
|
153
153
|
val nextById = value?.associateBy { it.id } ?: emptyMap()
|
|
154
|
-
|
|
154
|
+
field = value
|
|
155
155
|
(prevById.keys - nextById.keys).forEach { id ->
|
|
156
156
|
view.removePolyline(id)
|
|
157
157
|
}
|
|
@@ -159,35 +159,23 @@ class RNGoogleMapsPlusView(
|
|
|
159
159
|
nextById.forEach { (id, next) ->
|
|
160
160
|
val prev = prevById[id]
|
|
161
161
|
if (prev == null) {
|
|
162
|
-
view.addPolyline(id, polylineBuilder.
|
|
162
|
+
view.addPolyline(id, polylineBuilder.build(next))
|
|
163
163
|
} else if (!prev.polylineEquals(next)) {
|
|
164
|
-
view.updatePolyline(id) {
|
|
164
|
+
view.updatePolyline(id) { polyline ->
|
|
165
165
|
onUi {
|
|
166
|
-
|
|
167
|
-
next.coordinates.map {
|
|
168
|
-
|
|
169
|
-
LatLng(it.latitude, it.longitude)
|
|
170
|
-
}
|
|
171
|
-
next.width?.let { gms.width = it.dpToPx() }
|
|
172
|
-
next.lineCap?.let {
|
|
173
|
-
val cap = polylineBuilder.mapLineCap(it)
|
|
174
|
-
gms.startCap = cap
|
|
175
|
-
gms.endCap = cap
|
|
176
|
-
}
|
|
177
|
-
next.lineJoin?.let { gms.jointType = polylineBuilder.mapLineJoin(it) }
|
|
178
|
-
next.color?.let { gms.color = it.toColor() }
|
|
179
|
-
next.zIndex?.let { gms.zIndex = it.toFloat() }
|
|
166
|
+
polylineBuilder.update(polyline, next)
|
|
180
167
|
}
|
|
181
168
|
}
|
|
182
169
|
}
|
|
183
170
|
}
|
|
184
|
-
field = value
|
|
185
171
|
}
|
|
186
172
|
|
|
187
173
|
override var polygons: Array<RNPolygon>? = null
|
|
188
174
|
set(value) {
|
|
175
|
+
if (field.contentEquals(value)) return
|
|
189
176
|
val prevById = field?.associateBy { it.id } ?: emptyMap()
|
|
190
177
|
val nextById = value?.associateBy { it.id } ?: emptyMap()
|
|
178
|
+
field = value
|
|
191
179
|
|
|
192
180
|
(prevById.keys - nextById.keys).forEach { id ->
|
|
193
181
|
view.removePolygon(id)
|
|
@@ -196,30 +184,21 @@ class RNGoogleMapsPlusView(
|
|
|
196
184
|
nextById.forEach { (id, next) ->
|
|
197
185
|
val prev = prevById[id]
|
|
198
186
|
if (prev == null) {
|
|
199
|
-
view.addPolygon(id, polygonBuilder.
|
|
187
|
+
view.addPolygon(id, polygonBuilder.build(next))
|
|
200
188
|
} else if (!prev.polygonEquals(next)) {
|
|
201
|
-
view.updatePolygon(id) {
|
|
202
|
-
onUi {
|
|
203
|
-
gmsPoly.points =
|
|
204
|
-
next.coordinates.map {
|
|
205
|
-
com.google.android.gms.maps.model
|
|
206
|
-
.LatLng(it.latitude, it.longitude)
|
|
207
|
-
}
|
|
208
|
-
next.fillColor?.let { gmsPoly.fillColor = it.toColor() }
|
|
209
|
-
next.strokeColor?.let { gmsPoly.strokeColor = it.toColor() }
|
|
210
|
-
next.strokeWidth?.let { gmsPoly.strokeWidth = it.dpToPx() }
|
|
211
|
-
next.zIndex?.let { gmsPoly.zIndex = it.toFloat() }
|
|
212
|
-
}
|
|
189
|
+
view.updatePolygon(id) { polygon ->
|
|
190
|
+
onUi { polygonBuilder.update(polygon, next) }
|
|
213
191
|
}
|
|
214
192
|
}
|
|
215
193
|
}
|
|
216
|
-
field = value
|
|
217
194
|
}
|
|
218
195
|
|
|
219
196
|
override var circles: Array<RNCircle>? = null
|
|
220
197
|
set(value) {
|
|
198
|
+
if (field.contentEquals(value)) return
|
|
221
199
|
val prevById = field?.associateBy { it.id } ?: emptyMap()
|
|
222
200
|
val nextById = value?.associateBy { it.id } ?: emptyMap()
|
|
201
|
+
field = value
|
|
223
202
|
|
|
224
203
|
(prevById.keys - nextById.keys).forEach { id ->
|
|
225
204
|
view.removeCircle(id)
|
|
@@ -228,25 +207,21 @@ class RNGoogleMapsPlusView(
|
|
|
228
207
|
nextById.forEach { (id, next) ->
|
|
229
208
|
val prev = prevById[id]
|
|
230
209
|
if (prev == null) {
|
|
231
|
-
view.addCircle(id, circleBuilder.
|
|
210
|
+
view.addCircle(id, circleBuilder.build(next))
|
|
232
211
|
} else if (!prev.circleEquals(next)) {
|
|
233
|
-
view.updateCircle(id) {
|
|
212
|
+
view.updateCircle(id) { circle ->
|
|
234
213
|
onUi {
|
|
235
|
-
|
|
236
|
-
next.radius?.let { gmsCircle.radius = it }
|
|
237
|
-
next.strokeWidth?.let { gmsCircle.strokeWidth = it.dpToPx() }
|
|
238
|
-
next.strokeColor?.let { gmsCircle.strokeColor = it.toColor() }
|
|
239
|
-
next.fillColor?.let { gmsCircle.fillColor = it.toColor() }
|
|
240
|
-
next.zIndex?.let { gmsCircle.zIndex = it.toFloat() } ?: run { gmsCircle.zIndex = 0f }
|
|
214
|
+
circleBuilder.update(circle, next)
|
|
241
215
|
}
|
|
242
216
|
}
|
|
243
217
|
}
|
|
244
218
|
}
|
|
245
|
-
field = value
|
|
246
219
|
}
|
|
247
220
|
|
|
248
221
|
override var locationConfig: RNLocationConfig? = null
|
|
249
222
|
set(value) {
|
|
223
|
+
if (field == value) return
|
|
224
|
+
field = value
|
|
250
225
|
view.locationConfig = value
|
|
251
226
|
}
|
|
252
227
|
|
|
@@ -259,6 +234,7 @@ class RNGoogleMapsPlusView(
|
|
|
259
234
|
set(cb) {
|
|
260
235
|
view.onMapReady = cb
|
|
261
236
|
}
|
|
237
|
+
|
|
262
238
|
override var onLocationUpdate: ((RNLocation) -> Unit)? = null
|
|
263
239
|
set(cb) {
|
|
264
240
|
view.onLocationUpdate = cb
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
package com.rngooglemapsplus.extensions
|
|
2
|
+
|
|
3
|
+
import com.rngooglemapsplus.RNMarker
|
|
4
|
+
|
|
5
|
+
fun RNMarker.markerEquals(b: RNMarker): Boolean =
|
|
6
|
+
id == b.id &&
|
|
7
|
+
zIndex == b.zIndex &&
|
|
8
|
+
coordinate == b.coordinate &&
|
|
9
|
+
anchor == b.anchor &&
|
|
10
|
+
markerStyleEquals(b)
|
|
11
|
+
|
|
12
|
+
fun RNMarker.markerStyleEquals(b: RNMarker): Boolean = iconSvg == b.iconSvg
|
|
13
|
+
|
|
14
|
+
fun RNMarker.styleHash(): Int =
|
|
15
|
+
arrayOf<Any?>(
|
|
16
|
+
iconSvg,
|
|
17
|
+
).contentHashCode()
|