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