react-native-google-maps-plus 1.0.2 → 1.0.3-dev.1
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 +127 -11
- package/android/src/main/java/com/rngooglemapsplus/GoogleMapsViewImpl.kt +239 -112
- package/android/src/main/java/com/rngooglemapsplus/MapCircle.kt +29 -0
- package/android/src/main/java/com/rngooglemapsplus/MapMarker.kt +6 -5
- package/android/src/main/java/com/rngooglemapsplus/MapPolygon.kt +3 -1
- package/android/src/main/java/com/rngooglemapsplus/MapPolyline.kt +3 -1
- package/android/src/main/java/com/rngooglemapsplus/RNGoogleMapsPlusView.kt +115 -88
- package/ios/Color.swift +20 -20
- package/ios/GoogleMapViewImpl.swift +194 -139
- package/ios/MapCircle.swift +43 -0
- package/ios/MapMarker.swift +10 -17
- package/ios/MapPolygon.swift +9 -6
- package/ios/MapPolyline.swift +9 -7
- package/ios/PermissionHandler.swift +1 -1
- package/ios/RNGoogleMapsPlusModule.swift +1 -1
- package/ios/RNGoogleMapsPlusView.swift +148 -105
- package/lib/module/types.js.map +1 -1
- package/lib/typescript/src/RNGoogleMapsPlusView.nitro.d.ts +17 -12
- package/lib/typescript/src/RNGoogleMapsPlusView.nitro.d.ts.map +1 -1
- package/lib/typescript/src/types.d.ts +21 -3
- package/lib/typescript/src/types.d.ts.map +1 -1
- package/nitrogen/generated/android/c++/JHybridRNGoogleMapsPlusViewSpec.cpp +173 -69
- package/nitrogen/generated/android/c++/JHybridRNGoogleMapsPlusViewSpec.hpp +32 -22
- package/nitrogen/generated/android/c++/JRNCircle.hpp +84 -0
- package/nitrogen/generated/android/c++/JRNInitialProps.hpp +66 -0
- package/nitrogen/generated/android/c++/JRNMapType.hpp +68 -0
- package/nitrogen/generated/android/c++/JRNMarker.hpp +4 -4
- package/nitrogen/generated/android/c++/JRNPolygon.hpp +8 -4
- package/nitrogen/generated/android/c++/JRNPolyline.hpp +8 -4
- package/nitrogen/generated/android/c++/views/JHybridRNGoogleMapsPlusViewStateUpdater.cpp +24 -4
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/rngooglemapsplus/HybridRNGoogleMapsPlusViewSpec.kt +65 -11
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/rngooglemapsplus/RNCircle.kt +50 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/rngooglemapsplus/RNInitialProps.kt +35 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/rngooglemapsplus/RNMapType.kt +24 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/rngooglemapsplus/RNMarker.kt +1 -1
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/rngooglemapsplus/RNPolygon.kt +4 -1
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/rngooglemapsplus/RNPolyline.kt +4 -1
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/rngooglemapsplus/views/HybridRNGoogleMapsPlusViewManager.kt +7 -1
- package/nitrogen/generated/ios/RNGoogleMapsPlus-Swift-Cxx-Bridge.hpp +188 -45
- package/nitrogen/generated/ios/RNGoogleMapsPlus-Swift-Cxx-Umbrella.hpp +9 -0
- package/nitrogen/generated/ios/c++/HybridRNGoogleMapsPlusViewSpecSwift.hpp +85 -37
- package/nitrogen/generated/ios/c++/views/HybridRNGoogleMapsPlusViewComponent.mm +41 -16
- package/nitrogen/generated/ios/swift/HybridRNGoogleMapsPlusViewSpec.swift +16 -11
- package/nitrogen/generated/ios/swift/HybridRNGoogleMapsPlusViewSpec_cxx.swift +296 -45
- package/nitrogen/generated/ios/swift/RNCircle.swift +198 -0
- package/nitrogen/generated/ios/swift/RNInitialProps.swift +107 -0
- package/nitrogen/generated/ios/swift/RNMapType.swift +52 -0
- package/nitrogen/generated/ios/swift/RNMarker.swift +17 -5
- package/nitrogen/generated/ios/swift/RNPolygon.swift +40 -5
- package/nitrogen/generated/ios/swift/RNPolyline.swift +40 -5
- package/nitrogen/generated/shared/c++/HybridRNGoogleMapsPlusViewSpec.cpp +12 -2
- package/nitrogen/generated/shared/c++/HybridRNGoogleMapsPlusViewSpec.hpp +45 -26
- package/nitrogen/generated/shared/c++/RNCircle.hpp +98 -0
- package/nitrogen/generated/shared/c++/RNInitialProps.hpp +78 -0
- package/nitrogen/generated/shared/c++/RNMapType.hpp +88 -0
- package/nitrogen/generated/shared/c++/RNMarker.hpp +6 -6
- package/nitrogen/generated/shared/c++/RNPolygon.hpp +10 -6
- package/nitrogen/generated/shared/c++/RNPolyline.hpp +10 -6
- package/nitrogen/generated/shared/c++/views/HybridRNGoogleMapsPlusViewComponent.cpp +92 -32
- package/nitrogen/generated/shared/c++/views/HybridRNGoogleMapsPlusViewComponent.hpp +21 -13
- package/nitrogen/generated/shared/json/RNGoogleMapsPlusViewConfig.json +6 -1
- package/package.json +5 -5
- package/src/RNGoogleMapsPlusView.nitro.ts +19 -11
- package/src/types.ts +24 -3
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
package com.rngooglemapsplus
|
|
2
|
+
|
|
3
|
+
import com.facebook.react.uimanager.PixelUtil.dpToPx
|
|
4
|
+
import com.google.android.gms.maps.model.CircleOptions
|
|
5
|
+
import com.google.android.gms.maps.model.LatLng
|
|
6
|
+
|
|
7
|
+
class MapCircleOptions {
|
|
8
|
+
fun buildCircleOptions(circle: RNCircle): CircleOptions =
|
|
9
|
+
CircleOptions().apply {
|
|
10
|
+
center(LatLng(circle.center.latitude, circle.center.longitude))
|
|
11
|
+
circle.radius?.let { radius(it) }
|
|
12
|
+
circle.strokeWidth?.let { strokeWidth(it.dpToPx()) }
|
|
13
|
+
circle.strokeColor?.let { strokeColor(it.toColor()) }
|
|
14
|
+
circle.fillColor?.let { fillColor(it.toColor()) }
|
|
15
|
+
circle.pressable?.let { clickable(it) }
|
|
16
|
+
circle.zIndex?.let { zIndex(it.toFloat()) }
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
fun RNCircle.circleEquals(b: RNCircle): Boolean {
|
|
21
|
+
if (zIndex != b.zIndex) return false
|
|
22
|
+
if (pressable != b.pressable) return false
|
|
23
|
+
if (center != b.center) return false
|
|
24
|
+
if (radius != b.radius) return false
|
|
25
|
+
if (strokeWidth != b.strokeWidth) return false
|
|
26
|
+
if (strokeColor != b.strokeColor) return false
|
|
27
|
+
if (fillColor != b.fillColor) return false
|
|
28
|
+
return true
|
|
29
|
+
}
|
|
@@ -36,11 +36,12 @@ class MarkerOptions(
|
|
|
36
36
|
m: RNMarker,
|
|
37
37
|
icon: BitmapDescriptor,
|
|
38
38
|
): MarkerOptions =
|
|
39
|
-
MarkerOptions()
|
|
40
|
-
|
|
41
|
-
.
|
|
42
|
-
|
|
43
|
-
|
|
39
|
+
MarkerOptions().apply {
|
|
40
|
+
position(LatLng(m.coordinate.latitude, m.coordinate.longitude))
|
|
41
|
+
anchor((m.anchor?.x ?: 0.5).toFloat(), (m.anchor?.y ?: 0.5).toFloat())
|
|
42
|
+
icon(icon)
|
|
43
|
+
m.zIndex?.let { zIndex(it.toFloat()) }
|
|
44
|
+
}
|
|
44
45
|
|
|
45
46
|
fun buildIconAsync(
|
|
46
47
|
id: String,
|
|
@@ -15,12 +15,14 @@ class MapPolygonOptions {
|
|
|
15
15
|
poly.fillColor?.let { fillColor(it.toColor()) }
|
|
16
16
|
poly.strokeColor?.let { strokeColor(it.toColor()) }
|
|
17
17
|
poly.strokeWidth?.let { strokeWidth(it.dpToPx()) }
|
|
18
|
-
|
|
18
|
+
poly.pressable?.let { clickable(it) }
|
|
19
|
+
poly.zIndex?.let { zIndex(it.toFloat()) }
|
|
19
20
|
}
|
|
20
21
|
}
|
|
21
22
|
|
|
22
23
|
fun RNPolygon.polygonEquals(b: RNPolygon): Boolean {
|
|
23
24
|
if (zIndex != b.zIndex) return false
|
|
25
|
+
if (pressable != b.pressable) return false
|
|
24
26
|
if (strokeWidth != b.strokeWidth) return false
|
|
25
27
|
if (fillColor != b.fillColor) return false
|
|
26
28
|
if (strokeColor != b.strokeColor) return false
|
|
@@ -22,7 +22,8 @@ class MapPolylineOptions {
|
|
|
22
22
|
pl.lineCap?.let { endCap(mapLineCap(it)) }
|
|
23
23
|
pl.lineJoin?.let { jointType(mapLineJoin(it)) }
|
|
24
24
|
pl.color?.let { color(it.toColor()) }
|
|
25
|
-
|
|
25
|
+
pl.pressable?.let { clickable(it) }
|
|
26
|
+
pl.zIndex?.let { zIndex(it.toFloat()) }
|
|
26
27
|
}
|
|
27
28
|
|
|
28
29
|
fun mapLineCap(type: RNLineCapType?): Cap =
|
|
@@ -43,6 +44,7 @@ class MapPolylineOptions {
|
|
|
43
44
|
|
|
44
45
|
fun RNPolyline.polylineEquals(b: RNPolyline): Boolean {
|
|
45
46
|
if (zIndex != b.zIndex) return false
|
|
47
|
+
if (pressable != b.pressable) return false
|
|
46
48
|
if ((width ?: 0.0) != (b.width ?: 0.0)) return false
|
|
47
49
|
if (lineCap != b.lineCap) return false
|
|
48
50
|
if (lineJoin != b.lineJoin) return false
|
|
@@ -5,6 +5,7 @@ import com.facebook.react.bridge.UiThreadUtil
|
|
|
5
5
|
import com.facebook.react.uimanager.PixelUtil.dpToPx
|
|
6
6
|
import com.facebook.react.uimanager.ThemedReactContext
|
|
7
7
|
import com.google.android.gms.maps.model.CameraPosition
|
|
8
|
+
import com.google.android.gms.maps.model.LatLng
|
|
8
9
|
import com.google.android.gms.maps.model.MapColorScheme
|
|
9
10
|
import com.google.android.gms.maps.model.MapStyleOptions
|
|
10
11
|
import com.margelo.nitro.core.Promise
|
|
@@ -13,71 +14,77 @@ import com.margelo.nitro.core.Promise
|
|
|
13
14
|
class RNGoogleMapsPlusView(
|
|
14
15
|
val context: ThemedReactContext,
|
|
15
16
|
) : HybridRNGoogleMapsPlusViewSpec() {
|
|
16
|
-
private var currentCustomMapStyle: String =
|
|
17
|
+
private var currentCustomMapStyle: String? = null
|
|
17
18
|
private var permissionHandler = PermissionHandler(context)
|
|
18
19
|
private var locationHandler = LocationHandler(context)
|
|
19
20
|
private var playServiceHandler = PlayServicesHandler(context)
|
|
21
|
+
|
|
20
22
|
private val markerOptions = MarkerOptions()
|
|
23
|
+
private val polylineOptions = MapPolylineOptions()
|
|
24
|
+
private val polygonOptions = MapPolygonOptions()
|
|
25
|
+
private val circleOptions = MapCircleOptions()
|
|
21
26
|
|
|
22
27
|
override val view =
|
|
23
28
|
GoogleMapsViewImpl(context, locationHandler, playServiceHandler, markerOptions)
|
|
24
29
|
|
|
25
|
-
|
|
26
|
-
|
|
30
|
+
override var initialProps: RNInitialProps? = null
|
|
31
|
+
set(value) {
|
|
32
|
+
view.initMapView(
|
|
33
|
+
value?.mapId,
|
|
34
|
+
value?.liteMode,
|
|
35
|
+
mapCameraToCameraPosition(value?.initialCamera),
|
|
36
|
+
)
|
|
37
|
+
}
|
|
27
38
|
|
|
28
|
-
override var buildingEnabled: Boolean
|
|
29
|
-
get() = view.buildingEnabled
|
|
39
|
+
override var buildingEnabled: Boolean? = null
|
|
30
40
|
set(value) {
|
|
31
41
|
view.buildingEnabled = value
|
|
32
42
|
}
|
|
33
43
|
|
|
34
|
-
override var trafficEnabled: Boolean
|
|
35
|
-
get() = view.trafficEnabled
|
|
44
|
+
override var trafficEnabled: Boolean? = null
|
|
36
45
|
set(value) {
|
|
37
46
|
view.trafficEnabled = value
|
|
38
47
|
}
|
|
39
48
|
|
|
40
|
-
override var customMapStyle: String
|
|
41
|
-
get() = currentCustomMapStyle
|
|
49
|
+
override var customMapStyle: String? = null
|
|
42
50
|
set(value) {
|
|
43
51
|
currentCustomMapStyle = value
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
override var initialCamera: RNCamera
|
|
48
|
-
get() = mapCameraPotionToCamera(view.initialCamera)
|
|
49
|
-
set(value) {
|
|
50
|
-
view.initialCamera = mapCameraToCameraPosition(value)
|
|
52
|
+
value?.let {
|
|
53
|
+
view.customMapStyle = MapStyleOptions(it)
|
|
54
|
+
}
|
|
51
55
|
}
|
|
52
56
|
|
|
53
|
-
override var userInterfaceStyle: RNUserInterfaceStyle
|
|
54
|
-
get() = mapColorSchemeToUserInterfaceStyle(view.userInterfaceStyle)
|
|
57
|
+
override var userInterfaceStyle: RNUserInterfaceStyle? = null
|
|
55
58
|
set(value) {
|
|
56
59
|
view.userInterfaceStyle = userInterfaceStyleToMapColorScheme(value)
|
|
57
60
|
}
|
|
58
61
|
|
|
59
|
-
override var minZoomLevel: Double
|
|
60
|
-
get() = view.minZoomLevel
|
|
62
|
+
override var minZoomLevel: Double? = null
|
|
61
63
|
set(value) {
|
|
62
64
|
view.minZoomLevel = value
|
|
63
65
|
}
|
|
64
66
|
|
|
65
|
-
override var maxZoomLevel: Double
|
|
66
|
-
get() = view.maxZoomLevel
|
|
67
|
+
override var maxZoomLevel: Double? = null
|
|
67
68
|
set(value) {
|
|
68
69
|
view.maxZoomLevel = value
|
|
69
70
|
}
|
|
70
71
|
|
|
71
|
-
override var mapPadding: RNMapPadding
|
|
72
|
-
get() = view.mapPadding
|
|
72
|
+
override var mapPadding: RNMapPadding? = null
|
|
73
73
|
set(value) {
|
|
74
74
|
view.mapPadding = value
|
|
75
75
|
}
|
|
76
76
|
|
|
77
|
-
override var
|
|
77
|
+
override var mapType: RNMapType? = null
|
|
78
78
|
set(value) {
|
|
79
|
-
|
|
80
|
-
|
|
79
|
+
value?.let {
|
|
80
|
+
view.mapType = it.value
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
override var markers: Array<RNMarker>? = null
|
|
85
|
+
set(value) {
|
|
86
|
+
val prevById = field?.associateBy { it.id } ?: emptyMap()
|
|
87
|
+
val nextById = value?.associateBy { it.id } ?: emptyMap()
|
|
81
88
|
|
|
82
89
|
(prevById.keys - nextById.keys).forEach { id ->
|
|
83
90
|
markerOptions.cancelIconJob(id)
|
|
@@ -96,27 +103,24 @@ class RNGoogleMapsPlusView(
|
|
|
96
103
|
} else if (!prev.markerEquals(next)) {
|
|
97
104
|
view.updateMarker(id) { m ->
|
|
98
105
|
onUi {
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
if (prev.zIndex != next.zIndex) {
|
|
107
|
-
m.zIndex = next.zIndex.toFloat()
|
|
106
|
+
m.position =
|
|
107
|
+
LatLng(
|
|
108
|
+
next.coordinate.latitude,
|
|
109
|
+
next.coordinate.longitude,
|
|
110
|
+
)
|
|
111
|
+
next.zIndex?.let { m.zIndex = it.toFloat() } ?: run {
|
|
112
|
+
m.zIndex = 0f
|
|
108
113
|
}
|
|
114
|
+
|
|
109
115
|
if (!prev.markerStyleEquals(next)) {
|
|
110
116
|
markerOptions.buildIconAsync(id, next) { icon ->
|
|
111
117
|
m.setIcon(icon)
|
|
112
118
|
}
|
|
113
119
|
}
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
)
|
|
119
|
-
}
|
|
120
|
+
m.setAnchor(
|
|
121
|
+
(next.anchor?.x ?: 0.5).toFloat(),
|
|
122
|
+
(next.anchor?.y ?: 0.5).toFloat(),
|
|
123
|
+
)
|
|
120
124
|
}
|
|
121
125
|
}
|
|
122
126
|
}
|
|
@@ -124,10 +128,10 @@ class RNGoogleMapsPlusView(
|
|
|
124
128
|
field = value
|
|
125
129
|
}
|
|
126
130
|
|
|
127
|
-
override var polylines: Array<RNPolyline
|
|
131
|
+
override var polylines: Array<RNPolyline>? = null
|
|
128
132
|
set(value) {
|
|
129
|
-
val prevById = field
|
|
130
|
-
val nextById = value
|
|
133
|
+
val prevById = field?.associateBy { it.id } ?: emptyMap()
|
|
134
|
+
val nextById = value?.associateBy { it.id } ?: emptyMap()
|
|
131
135
|
|
|
132
136
|
(prevById.keys - nextById.keys).forEach { id ->
|
|
133
137
|
view.removePolyline(id)
|
|
@@ -142,8 +146,8 @@ class RNGoogleMapsPlusView(
|
|
|
142
146
|
onUi {
|
|
143
147
|
gms.points =
|
|
144
148
|
next.coordinates.map {
|
|
145
|
-
|
|
146
|
-
|
|
149
|
+
|
|
150
|
+
LatLng(it.latitude, it.longitude)
|
|
147
151
|
}
|
|
148
152
|
next.width?.let { gms.width = it.dpToPx() }
|
|
149
153
|
next.lineCap?.let {
|
|
@@ -153,7 +157,7 @@ class RNGoogleMapsPlusView(
|
|
|
153
157
|
}
|
|
154
158
|
next.lineJoin?.let { gms.jointType = polylineOptions.mapLineJoin(it) }
|
|
155
159
|
next.color?.let { gms.color = it.toColor() }
|
|
156
|
-
gms.zIndex =
|
|
160
|
+
next.zIndex?.let { gms.zIndex = it.toFloat() }
|
|
157
161
|
}
|
|
158
162
|
}
|
|
159
163
|
}
|
|
@@ -161,10 +165,10 @@ class RNGoogleMapsPlusView(
|
|
|
161
165
|
field = value
|
|
162
166
|
}
|
|
163
167
|
|
|
164
|
-
override var polygons: Array<RNPolygon
|
|
168
|
+
override var polygons: Array<RNPolygon>? = null
|
|
165
169
|
set(value) {
|
|
166
|
-
val prevById = field
|
|
167
|
-
val nextById = value
|
|
170
|
+
val prevById = field?.associateBy { it.id } ?: emptyMap()
|
|
171
|
+
val nextById = value?.associateBy { it.id } ?: emptyMap()
|
|
168
172
|
|
|
169
173
|
(prevById.keys - nextById.keys).forEach { id ->
|
|
170
174
|
view.removePolygon(id)
|
|
@@ -185,7 +189,36 @@ class RNGoogleMapsPlusView(
|
|
|
185
189
|
next.fillColor?.let { gmsPoly.fillColor = it.toColor() }
|
|
186
190
|
next.strokeColor?.let { gmsPoly.strokeColor = it.toColor() }
|
|
187
191
|
next.strokeWidth?.let { gmsPoly.strokeWidth = it.dpToPx() }
|
|
188
|
-
gmsPoly.zIndex =
|
|
192
|
+
next.zIndex?.let { gmsPoly.zIndex = it.toFloat() }
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
}
|
|
196
|
+
}
|
|
197
|
+
field = value
|
|
198
|
+
}
|
|
199
|
+
|
|
200
|
+
override var circles: Array<RNCircle>? = null
|
|
201
|
+
set(value) {
|
|
202
|
+
val prevById = field?.associateBy { it.id } ?: emptyMap()
|
|
203
|
+
val nextById = value?.associateBy { it.id } ?: emptyMap()
|
|
204
|
+
|
|
205
|
+
(prevById.keys - nextById.keys).forEach { id ->
|
|
206
|
+
view.removeCircle(id)
|
|
207
|
+
}
|
|
208
|
+
|
|
209
|
+
nextById.forEach { (id, next) ->
|
|
210
|
+
val prev = prevById[id]
|
|
211
|
+
if (prev == null) {
|
|
212
|
+
view.addCircle(id, circleOptions.buildCircleOptions(next))
|
|
213
|
+
} else if (!prev.circleEquals(next)) {
|
|
214
|
+
view.updateCircle(id) { gmsCircle ->
|
|
215
|
+
onUi {
|
|
216
|
+
gmsCircle.center = LatLng(next.center.latitude, next.center.longitude)
|
|
217
|
+
next.radius?.let { gmsCircle.radius = it }
|
|
218
|
+
next.strokeWidth?.let { gmsCircle.strokeWidth = it.dpToPx() }
|
|
219
|
+
next.strokeColor?.let { gmsCircle.strokeColor = it.toColor() }
|
|
220
|
+
next.fillColor?.let { gmsCircle.fillColor = it.toColor() }
|
|
221
|
+
next.zIndex?.let { gmsCircle.zIndex = it.toFloat() } ?: run { gmsCircle.zIndex = 0f }
|
|
189
222
|
}
|
|
190
223
|
}
|
|
191
224
|
}
|
|
@@ -193,55 +226,61 @@ class RNGoogleMapsPlusView(
|
|
|
193
226
|
field = value
|
|
194
227
|
}
|
|
195
228
|
|
|
196
|
-
override var onMapError: ((RNMapErrorCode) -> Unit)?
|
|
197
|
-
get() = view.onMapError
|
|
229
|
+
override var onMapError: ((RNMapErrorCode) -> Unit)? = null
|
|
198
230
|
set(cb) {
|
|
199
231
|
view.onMapError = cb
|
|
200
232
|
}
|
|
201
233
|
|
|
202
|
-
override var onMapReady: ((Boolean) -> Unit)?
|
|
203
|
-
get() = view.onMapReady
|
|
234
|
+
override var onMapReady: ((Boolean) -> Unit)? = null
|
|
204
235
|
set(cb) {
|
|
205
236
|
view.onMapReady = cb
|
|
206
237
|
}
|
|
207
|
-
override var onLocationUpdate: ((RNLocation) -> Unit)?
|
|
208
|
-
get() = view.onLocationUpdate
|
|
238
|
+
override var onLocationUpdate: ((RNLocation) -> Unit)? = null
|
|
209
239
|
set(cb) {
|
|
210
240
|
view.onLocationUpdate = cb
|
|
211
241
|
}
|
|
212
242
|
|
|
213
|
-
override var onLocationError: ((RNLocationErrorCode) -> Unit)?
|
|
214
|
-
get() = view.onLocationError
|
|
243
|
+
override var onLocationError: ((RNLocationErrorCode) -> Unit)? = null
|
|
215
244
|
set(cb) {
|
|
216
245
|
view.onLocationError = cb
|
|
217
246
|
}
|
|
218
247
|
|
|
219
|
-
override var onMapPress: ((RNLatLng) -> Unit)?
|
|
220
|
-
get() = view.onMapPress
|
|
248
|
+
override var onMapPress: ((RNLatLng) -> Unit)? = null
|
|
221
249
|
set(cb) {
|
|
222
250
|
view.onMapPress = cb
|
|
223
251
|
}
|
|
224
252
|
|
|
225
|
-
override var onMarkerPress: ((String) -> Unit)?
|
|
226
|
-
get() = view.onMarkerPress
|
|
253
|
+
override var onMarkerPress: ((String) -> Unit)? = null
|
|
227
254
|
set(cb) {
|
|
228
255
|
view.onMarkerPress = cb
|
|
229
256
|
}
|
|
230
257
|
|
|
231
|
-
override var
|
|
232
|
-
|
|
258
|
+
override var onPolylinePress: ((String) -> Unit)? = null
|
|
259
|
+
set(cb) {
|
|
260
|
+
view.onPolylinePress = cb
|
|
261
|
+
}
|
|
262
|
+
|
|
263
|
+
override var onPolygonPress: ((String) -> Unit)? = null
|
|
264
|
+
set(cb) {
|
|
265
|
+
view.onPolygonPress = cb
|
|
266
|
+
}
|
|
267
|
+
|
|
268
|
+
override var onCirclePress: ((String) -> Unit)? = null
|
|
269
|
+
set(cb) {
|
|
270
|
+
view.onCirclePress = cb
|
|
271
|
+
}
|
|
272
|
+
|
|
273
|
+
override var onCameraChangeStart: ((RNRegion, RNCamera, Boolean) -> Unit)? = null
|
|
233
274
|
set(cb) {
|
|
234
275
|
view.onCameraChangeStart = cb
|
|
235
276
|
}
|
|
236
277
|
|
|
237
|
-
override var onCameraChange: ((RNRegion, RNCamera, Boolean) -> Unit)?
|
|
238
|
-
get() = view.onCameraChange
|
|
278
|
+
override var onCameraChange: ((RNRegion, RNCamera, Boolean) -> Unit)? = null
|
|
239
279
|
set(cb) {
|
|
240
280
|
view.onCameraChange = cb
|
|
241
281
|
}
|
|
242
282
|
|
|
243
|
-
override var onCameraChangeComplete: ((RNRegion, RNCamera, Boolean) -> Unit)?
|
|
244
|
-
get() = view.onCameraChangeComplete
|
|
283
|
+
override var onCameraChangeComplete: ((RNRegion, RNCamera, Boolean) -> Unit)? = null
|
|
245
284
|
set(cb) {
|
|
246
285
|
view.onCameraChangeComplete = cb
|
|
247
286
|
}
|
|
@@ -280,8 +319,9 @@ class RNGoogleMapsPlusView(
|
|
|
280
319
|
|
|
281
320
|
override fun isGooglePlayServicesAvailable(): Boolean = playServiceHandler.isPlayServicesAvailable()
|
|
282
321
|
|
|
283
|
-
fun userInterfaceStyleToMapColorScheme(value: RNUserInterfaceStyle): Int
|
|
284
|
-
|
|
322
|
+
fun userInterfaceStyleToMapColorScheme(value: RNUserInterfaceStyle?): Int? {
|
|
323
|
+
value ?: return null
|
|
324
|
+
return when (value) {
|
|
285
325
|
RNUserInterfaceStyle.LIGHT -> {
|
|
286
326
|
MapColorScheme.LIGHT
|
|
287
327
|
}
|
|
@@ -294,8 +334,10 @@ class RNGoogleMapsPlusView(
|
|
|
294
334
|
MapColorScheme.FOLLOW_SYSTEM
|
|
295
335
|
}
|
|
296
336
|
}
|
|
337
|
+
}
|
|
297
338
|
|
|
298
|
-
fun mapCameraToCameraPosition(camera: RNCamera): CameraPosition {
|
|
339
|
+
fun mapCameraToCameraPosition(camera: RNCamera?): CameraPosition? {
|
|
340
|
+
camera ?: return null
|
|
299
341
|
val builder = CameraPosition.builder()
|
|
300
342
|
camera.center?.let {
|
|
301
343
|
builder.target(
|
|
@@ -311,21 +353,6 @@ class RNGoogleMapsPlusView(
|
|
|
311
353
|
|
|
312
354
|
return builder.build()
|
|
313
355
|
}
|
|
314
|
-
|
|
315
|
-
fun mapCameraPotionToCamera(cameraPosition: CameraPosition): RNCamera =
|
|
316
|
-
RNCamera(
|
|
317
|
-
center = RNLatLng(cameraPosition.target.latitude, cameraPosition.target.longitude),
|
|
318
|
-
zoom = cameraPosition.zoom.toDouble(),
|
|
319
|
-
bearing = cameraPosition.bearing.toDouble(),
|
|
320
|
-
tilt = cameraPosition.tilt.toDouble(),
|
|
321
|
-
)
|
|
322
|
-
|
|
323
|
-
fun mapColorSchemeToUserInterfaceStyle(value: Int): RNUserInterfaceStyle =
|
|
324
|
-
when (value) {
|
|
325
|
-
MapColorScheme.LIGHT -> RNUserInterfaceStyle.LIGHT
|
|
326
|
-
MapColorScheme.DARK -> RNUserInterfaceStyle.DARK
|
|
327
|
-
else -> RNUserInterfaceStyle.DEFAULT
|
|
328
|
-
}
|
|
329
356
|
}
|
|
330
357
|
|
|
331
358
|
private inline fun onUi(crossinline block: () -> Unit) {
|
package/ios/Color.swift
CHANGED
|
@@ -41,17 +41,17 @@ extension UIColor {
|
|
|
41
41
|
private static func fromRGBFunction(_ s: String) -> UIColor? {
|
|
42
42
|
let nums =
|
|
43
43
|
s
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
44
|
+
.replacingOccurrences(of: "rgba", with: "")
|
|
45
|
+
.replacingOccurrences(of: "rgb", with: "")
|
|
46
|
+
.replacingOccurrences(of: "(", with: "")
|
|
47
|
+
.replacingOccurrences(of: ")", with: "")
|
|
48
|
+
.split(separator: ",")
|
|
49
|
+
.map { $0.trimmingCharacters(in: .whitespaces) }
|
|
50
50
|
|
|
51
51
|
guard nums.count == 3 || nums.count == 4,
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
52
|
+
let r = Double(nums[0]),
|
|
53
|
+
let g = Double(nums[1]),
|
|
54
|
+
let b = Double(nums[2])
|
|
55
55
|
else { return nil }
|
|
56
56
|
let a = (nums.count == 4) ? (Double(nums[3]) ?? 1.0) : 1.0
|
|
57
57
|
return UIColor(
|
|
@@ -65,18 +65,18 @@ extension UIColor {
|
|
|
65
65
|
private static func fromHSLFunction(_ s: String) -> UIColor? {
|
|
66
66
|
let parts =
|
|
67
67
|
s
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
68
|
+
.replacingOccurrences(of: "hsla", with: "")
|
|
69
|
+
.replacingOccurrences(of: "hsl", with: "")
|
|
70
|
+
.replacingOccurrences(of: "(", with: "")
|
|
71
|
+
.replacingOccurrences(of: ")", with: "")
|
|
72
|
+
.replacingOccurrences(of: "%", with: "")
|
|
73
|
+
.split(separator: ",")
|
|
74
|
+
.map { $0.trimmingCharacters(in: .whitespaces) }
|
|
75
75
|
|
|
76
76
|
guard parts.count == 3 || parts.count == 4,
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
77
|
+
let h = Double(parts[0]),
|
|
78
|
+
let sPerc = Double(parts[1]),
|
|
79
|
+
let lPerc = Double(parts[2])
|
|
80
80
|
else { return nil }
|
|
81
81
|
|
|
82
82
|
let a = (parts.count == 4) ? (Double(parts[3]) ?? 1.0) : 1.0
|
|
@@ -87,7 +87,7 @@ extension UIColor {
|
|
|
87
87
|
let x = c * (1 - Swift.abs((h / 60).truncatingRemainder(dividingBy: 2) - 1))
|
|
88
88
|
let m = l - c / 2
|
|
89
89
|
|
|
90
|
-
// swiftlint:disable:next large_tuple
|
|
90
|
+
// swiftlint:disable:next large_tuple
|
|
91
91
|
let (r1, g1, b1): (Double, Double, Double)
|
|
92
92
|
switch h {
|
|
93
93
|
case 0..<60: (r1, g1, b1) = (c, x, 0)
|