@@ -15,6 +15,7 @@ import com.google.android.gms.maps.MapView
1515import com.google.android.gms.maps.model.CameraPosition
1616import com.google.android.gms.maps.model.Circle
1717import com.google.android.gms.maps.model.CircleOptions
18+ import com.google.android.gms.maps.model.IndoorBuilding
1819import com.google.android.gms.maps.model.LatLng
1920import com.google.android.gms.maps.model.LatLngBounds
2021import com.google.android.gms.maps.model.MapColorScheme
@@ -30,6 +31,8 @@ import com.google.android.gms.maps.model.TileOverlayOptions
3031import com.google.maps.android.data.kml.KmlLayer
3132import com.rngooglemapsplus.extensions.toGooglePriority
3233import com.rngooglemapsplus.extensions.toLocationErrorCode
34+ import com.rngooglemapsplus.extensions.toRNIndoorBuilding
35+ import com.rngooglemapsplus.extensions.toRNIndoorLevel
3336import java.io.ByteArrayInputStream
3437import java.nio.charset.StandardCharsets
3538
@@ -48,6 +51,7 @@ class GoogleMapsViewImpl(
4851 GoogleMap .OnPolygonClickListener ,
4952 GoogleMap .OnCircleClickListener ,
5053 GoogleMap .OnMarkerDragListener ,
54+ GoogleMap .OnIndoorStateChangeListener ,
5155 LifecycleEventListener {
5256 private var initialized = false
5357 private var mapReady = false
@@ -490,6 +494,8 @@ class GoogleMapsViewImpl(
490494 var onMarkerDragStart: ((String? , RNLatLng ) -> Unit )? = null
491495 var onMarkerDrag: ((String? , RNLatLng ) -> Unit )? = null
492496 var onMarkerDragEnd: ((String? , RNLatLng ) -> Unit )? = null
497+ var onIndoorBuildingFocused: ((RNIndoorBuilding ) -> Unit )? = null
498+ var onIndoorLevelActivated: ((RNIndoorLevel ) -> Unit )? = null
493499 var onCameraChangeStart: ((RNRegion , RNCamera , Boolean ) -> Unit )? = null
494500 var onCameraChange: ((RNRegion , RNCamera , Boolean ) -> Unit )? = null
495501 var onCameraChangeComplete: ((RNRegion , RNCamera , Boolean ) -> Unit )? = null
@@ -1003,6 +1009,21 @@ class GoogleMapsViewImpl(
10031009 RNLatLng (marker.position.latitude, marker.position.longitude),
10041010 )
10051011 }
1012+
1013+ override fun onIndoorBuildingFocused () {
1014+ val building = googleMap?.focusedBuilding ? : return
1015+ onIndoorBuildingFocused?.invoke(building.toRNIndoorBuilding())
1016+ }
1017+
1018+ override fun onIndoorLevelActivated (indoorBuilding : IndoorBuilding ) {
1019+ val activeLevel = indoorBuilding.levels.getOrNull(indoorBuilding.activeLevelIndex) ? : return
1020+ onIndoorLevelActivated?.invoke(
1021+ activeLevel.toRNIndoorLevel(
1022+ indoorBuilding.activeLevelIndex,
1023+ true ,
1024+ ),
1025+ )
1026+ }
10061027}
10071028
10081029private inline fun onUi (crossinline block : () -> Unit ) {
0 commit comments