@@ -14,7 +14,6 @@ import com.google.android.gms.maps.OnMapReadyCallback
1414import com.google.android.gms.maps.model.CameraPosition
1515import com.google.android.gms.maps.model.LatLng
1616import com.google.android.gms.maps.model.LatLngBounds
17- import com.google.android.gms.maps.model.MapColorScheme
1817import com.google.android.gms.maps.model.MapStyleOptions
1918import com.google.android.gms.maps.model.Marker
2019import com.google.android.gms.maps.model.MarkerOptions
@@ -38,25 +37,14 @@ class GoogleMapsViewImpl(
3837 LifecycleEventListener {
3938 private var googleMap: GoogleMap ? = null
4039
41- private var pendingBuildingEnabled: Boolean = false
42- private var pendingTrafficEnabled: Boolean = false
40+ private var pendingBuildingEnabled: Boolean? = null
41+ private var pendingTrafficEnabled: Boolean? = null
4342 private var pendingCustomMapStyle: MapStyleOptions ? = null
44- private var pendingInitialCamera: CameraPosition =
45- CameraPosition
46- .builder()
47- .target(
48- LatLng (
49- 0.0 ,
50- 0.0 ,
51- ),
52- ).zoom(0f )
53- .bearing(0f )
54- .tilt(0f )
55- .build()
56- private var pendingUserInterfaceStyle: Int = MapColorScheme .FOLLOW_SYSTEM
57- private var pendingMinZoomLevel: Double = 0.0
58- private var pendingMaxZoomLevel: Double = 21.0
59- private var pendingMapPadding: RNMapPadding = RNMapPadding (0.0 , 0.0 , 0.0 , 0.0 )
43+ private var pendingInitialCamera: CameraPosition ? = null
44+ private var pendingUserInterfaceStyle: Int? = null
45+ private var pendingMinZoomLevel: Double? = null
46+ private var pendingMaxZoomLevel: Double? = null
47+ private var pendingMapPadding: RNMapPadding ? = null
6048 private val pendingPolygons = mutableListOf<Pair <String , PolygonOptions >>()
6149 private val pendingPolylines = mutableListOf<Pair <String , PolylineOptions >>()
6250 private val pendingMarkers = mutableListOf<Pair <String , MarkerOptions >>()
@@ -235,27 +223,37 @@ class GoogleMapsViewImpl(
235223
236224 fun applyPending () {
237225 onUi {
238- googleMap?.setPadding(
239- pendingMapPadding.left.dpToPx().toInt(),
240- pendingMapPadding.top.dpToPx().toInt(),
241- pendingMapPadding.right.dpToPx().toInt(),
242- pendingMapPadding.bottom.dpToPx().toInt(),
243- )
244-
245- pendingInitialCamera.let {
226+ pendingMapPadding?.let {
227+ googleMap?.setPadding(
228+ it.left.dpToPx().toInt(),
229+ it.top.dpToPx().toInt(),
230+ it.right.dpToPx().toInt(),
231+ it.bottom.dpToPx().toInt(),
232+ )
233+ }
234+ pendingInitialCamera?.let {
246235 googleMap?.moveCamera(
247236 CameraUpdateFactory .newCameraPosition(
248237 it,
249238 ),
250239 )
251240 }
252-
253- googleMap?.isBuildingsEnabled = pendingBuildingEnabled
254- googleMap?.isTrafficEnabled = pendingTrafficEnabled
241+ pendingBuildingEnabled?.let {
242+ googleMap?.isBuildingsEnabled = it
243+ }
244+ pendingTrafficEnabled?.let {
245+ googleMap?.isTrafficEnabled = it
246+ }
255247 googleMap?.setMapStyle(pendingCustomMapStyle)
256- googleMap?.mapColorScheme = pendingUserInterfaceStyle
257- googleMap?.setMinZoomPreference(pendingMinZoomLevel.toFloat())
258- googleMap?.setMaxZoomPreference(pendingMaxZoomLevel.toFloat())
248+ pendingUserInterfaceStyle?.let {
249+ googleMap?.mapColorScheme = it
250+ }
251+ pendingMinZoomLevel?.let {
252+ googleMap?.setMinZoomPreference(it.toFloat())
253+ }
254+ pendingMaxZoomLevel?.let {
255+ googleMap?.setMaxZoomPreference(it.toFloat())
256+ }
259257 }
260258
261259 if (pendingMarkers.isNotEmpty()) {
@@ -280,21 +278,25 @@ class GoogleMapsViewImpl(
280278 }
281279 }
282280
283- var buildingEnabled: Boolean
281+ var buildingEnabled: Boolean?
284282 get() = googleMap?.isBuildingsEnabled ? : pendingBuildingEnabled
285283 set(value) {
286284 pendingBuildingEnabled = value
287- onUi {
288- googleMap?.isBuildingsEnabled = value
285+ value?.let {
286+ onUi {
287+ googleMap?.isBuildingsEnabled = it
288+ }
289289 }
290290 }
291291
292- var trafficEnabled: Boolean
292+ var trafficEnabled: Boolean?
293293 get() = googleMap?.isTrafficEnabled ? : pendingTrafficEnabled
294294 set(value) {
295295 pendingTrafficEnabled = value
296- onUi {
297- googleMap?.isTrafficEnabled = value
296+ value?.let {
297+ onUi {
298+ googleMap?.isTrafficEnabled = it
299+ }
298300 }
299301 }
300302
@@ -307,50 +309,59 @@ class GoogleMapsViewImpl(
307309 }
308310 }
309311
310- var initialCamera: CameraPosition
312+ var initialCamera: CameraPosition ?
311313 get() = pendingInitialCamera
312314 set(value) {
313315 pendingInitialCamera = value
314316 }
315317
316- var userInterfaceStyle: Int
318+ var userInterfaceStyle: Int?
317319 get() = pendingUserInterfaceStyle
318320 set(value) {
319321 pendingUserInterfaceStyle = value
320- onUi {
321- googleMap?.mapColorScheme = value
322+
323+ value?.let {
324+ onUi {
325+ googleMap?.mapColorScheme = it
326+ }
322327 }
323328 }
324329
325- var minZoomLevel: Double
330+ var minZoomLevel: Double?
326331 get() = pendingMinZoomLevel
327332 set(value) {
328333 pendingMinZoomLevel = value
329- onUi {
330- googleMap?.setMinZoomPreference(value.toFloat())
334+ value?.let {
335+ onUi {
336+ googleMap?.setMinZoomPreference(it.toFloat())
337+ }
331338 }
332339 }
333340
334- var maxZoomLevel: Double
341+ var maxZoomLevel: Double?
335342 get() = pendingMaxZoomLevel
336343 set(value) {
337344 pendingMaxZoomLevel = value
338- onUi {
339- googleMap?.setMaxZoomPreference(value.toFloat())
345+ value?.let {
346+ onUi {
347+ googleMap?.setMaxZoomPreference(it.toFloat())
348+ }
340349 }
341350 }
342351
343- var mapPadding: RNMapPadding
352+ var mapPadding: RNMapPadding ?
344353 get() = pendingMapPadding
345354 set(value) {
346355 pendingMapPadding = value
347- onUi {
348- googleMap?.setPadding(
349- value.left.dpToPx().toInt(),
350- value.top.dpToPx().toInt(),
351- value.right.dpToPx().toInt(),
352- value.bottom.dpToPx().toInt(),
353- )
356+ value?.let {
357+ onUi {
358+ googleMap?.setPadding(
359+ it.left.dpToPx().toInt(),
360+ it.top.dpToPx().toInt(),
361+ it.right.dpToPx().toInt(),
362+ it.bottom.dpToPx().toInt(),
363+ )
364+ }
354365 }
355366 }
356367
0 commit comments