Skip to content

Commit 1c9ae9c

Browse files
SceneView current viewpoint camera (#256)
* add getCurrentViewpointCamera in proxy * expose the currentViewpoint property * impls current view camera * adds a space for lambda * merged with feature branch. * Update toolkit/geo-compose/src/main/java/com/arcgismaps/toolkit/geocompose/SceneView.kt Co-authored-by: Puneet Prakash <[email protected]> --------- Co-authored-by: Puneet Prakash <[email protected]>
1 parent af69933 commit 1c9ae9c

File tree

1 file changed

+11
-0
lines changed
  • toolkit/geo-compose/src/main/java/com/arcgismaps/toolkit/geocompose

1 file changed

+11
-0
lines changed

Diff for: toolkit/geo-compose/src/main/java/com/arcgismaps/toolkit/geocompose/SceneView.kt

+11
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@ import androidx.compose.ui.viewinterop.AndroidView
3232
import com.arcgismaps.geometry.SpatialReference
3333
import com.arcgismaps.mapping.ArcGISScene
3434
import com.arcgismaps.mapping.TimeExtent
35+
import com.arcgismaps.mapping.view.Camera
3536
import com.arcgismaps.mapping.view.CameraController
3637
import com.arcgismaps.mapping.view.DoubleTapEvent
3738
import com.arcgismaps.mapping.view.DownEvent
@@ -76,6 +77,7 @@ import java.time.Instant
7677
* @param onSpatialReferenceChanged lambda invoked when the spatial reference of the composable SceneView has changed
7778
* @param onLayerViewStateChanged lambda invoked when the composable SceneView's layer view state is changed
7879
* @param onInteractingChanged lambda invoked when the user starts and ends interacting with the composable SceneView
80+
* @param onCurrentViewpointCameraChanged lambda invoked when the viewpoint camera of the composable SceneView has changed
7981
* @param onRotate lambda invoked when a user performs a rotation gesture on the composable SceneView
8082
* @param onScale lambda invoked when a user performs a pinch gesture on the composable SceneView
8183
* @param onUp lambda invoked when the user removes all their pointers from the composable SceneView
@@ -109,6 +111,7 @@ public fun SceneView(
109111
onSpatialReferenceChanged: ((spatialReference: SpatialReference?) -> Unit)? = null,
110112
onLayerViewStateChanged: ((GeoView.GeoViewLayerViewStateChanged) -> Unit)? = null,
111113
onInteractingChanged: ((isInteracting: Boolean) -> Unit)? = null,
114+
onCurrentViewpointCameraChanged: ((camera: Camera) -> Unit)? = null,
112115
onRotate: ((RotationChangeEvent) -> Unit)? = null,
113116
onScale: ((ScaleChangeEvent) -> Unit)? = null,
114117
onUp: ((UpEvent) -> Unit)? = null,
@@ -167,6 +170,7 @@ public fun SceneView(
167170
onSpatialReferenceChanged,
168171
onLayerViewStateChanged,
169172
onInteractingChanged,
173+
onCurrentViewpointCameraChanged,
170174
onRotate,
171175
onScale,
172176
onUp,
@@ -207,6 +211,7 @@ private fun SceneViewEventHandler(
207211
onSpatialReferenceChanged: ((spatialReference: SpatialReference?) -> Unit)?,
208212
onLayerViewStateChanged: ((GeoView.GeoViewLayerViewStateChanged) -> Unit)?,
209213
onInteractingChanged: ((isInteracting: Boolean) -> Unit)?,
214+
onCurrentViewpointCameraChanged: ((camera: Camera) -> Unit)?,
210215
onRotate: ((RotationChangeEvent) -> Unit)?,
211216
onScale: ((ScaleChangeEvent) -> Unit)?,
212217
onUp: ((UpEvent) -> Unit)?,
@@ -223,6 +228,7 @@ private fun SceneViewEventHandler(
223228
val currentOnSpatialReferenceChanged by rememberUpdatedState(onSpatialReferenceChanged)
224229
val currentOnLayerViewStateChanged by rememberUpdatedState(onLayerViewStateChanged)
225230
val currentOnInteractingChanged by rememberUpdatedState(onInteractingChanged)
231+
val currentOnViewpointCameraChanged by rememberUpdatedState(onCurrentViewpointCameraChanged)
226232
val currentOnRotate by rememberUpdatedState(onRotate)
227233
val currentOnScale by rememberUpdatedState(onScale)
228234
val currentOnUp by rememberUpdatedState(onUp)
@@ -255,6 +261,11 @@ private fun SceneViewEventHandler(
255261
currentOnLayerViewStateChanged?.invoke(currentLayerViewState)
256262
}
257263
}
264+
launch {
265+
sceneView.viewpointChanged.collect {
266+
currentOnViewpointCameraChanged?.invoke(sceneView.getCurrentViewpointCamera())
267+
}
268+
}
258269
launch(Dispatchers.Main.immediate) {
259270
sceneView.isInteracting.collect { isInteracting ->
260271
currentOnInteractingChanged?.invoke(isInteracting)

0 commit comments

Comments
 (0)