ArcGISMapViewHolder
Descripción General
Section titled “Descripción General”Para acceder a las funciones específicas del SDK de ArcGIS, use el ArcGISMapViewHolder.
La definición de ArcGISMapViewHolder es la siguiente:
typealias ArcGISMapViewHolder = MapViewHolderInterface<WrapSceneView, SceneView>
class ArcGISMapViewHolder( override val mapView: WrapSceneView, override val map: SceneView,) : MapViewHolderInterface<WrapSceneView, SceneView> { fun toScreenOffset(position: GeoPointInterface): Offset? suspend fun fromScreenOffset(offset: Offset): GeoPoint?}Propiedades
Section titled “Propiedades”mapView: WrapSceneView: WrapSceneView para envolver el SceneViewmap: SceneView: Clase ArcGISScene para manipular el MapView
Métodos
Section titled “Métodos”toScreenOffset(position: GeoPointInterface): Offset?: Devuelve la posición en el mapa indicada por GeoPointInterface como un valor Dp con la parte superior izquierda del MapView como (0,0)fromScreenOffsetSync(offset: Offset): GeoPoint?: Devuelve la posición GeoPointInterface en el mapa para la posición especificada por el valor Dp con la parte superior izquierda del MapView como (0,0)fromScreenOffset(offset: Offset): GeoPoint?: Devuelve la posición GeoPointInterface en el mapa para la posición especificada por el valor Dp con la parte superior izquierda del MapView como (0,0)
Obtener ArcGISMapViewHolder
Section titled “Obtener ArcGISMapViewHolder”El ArcGISMapViewHolder se puede obtener a través de getMapViewHolder() después de que se inicializa el mapa.
// ArcGISval arcgisState = rememberArcGISMapViewState()val arcgisHolder: ArcGISMapViewHolder? = arcgisState.getMapViewHolder();Ejemplo
Section titled “Ejemplo”@Composablefun BasicMapExample( modifier: Modifier = Modifier) { // Posición de la cámara del mapa val mapViewState = rememberArcGISMapViewState( cameraPosition = MapCameraPosition( position = GeoPoint.fromLatLong(40.40195, -3.68698), zoom = 8.0 ), )
// Configurar AuthenticatorState val authenticatorState = remember { AuthenticatorState() }
// Mantener ViewHolder var arcGisMapViewHolder by remember { mutableStateOf<ArcGISMapViewHolder?>(null) }
LaunchedEffect(arcGisMapViewHolder) { // Mostrar capa de información de tráfico arcGisMapViewHolder?.let { holder -> val trafficLayer = ArcGISMapImageLayer("https://traffic.arcgis.com/arcgis/rest/services/World/Traffic/MapServer") holder.map.scene!!.operationalLayers.add(trafficLayer) } }
ArcGISMapView( state = mapViewState, modifier = modifier.fillMaxSize(), sdkInitialize = { context -> ArcGISOAuthHybridInitialize( // AuthenticatorState para mostrar diálogo de inicio de sesión authenticatorState = authenticatorState
// URL del portal de ArcGIS portalUrl = "https://(your).maps.arcgis.com/",
// URL de redirección de la aplicación OAuth2 redirectUrl = "(application redirectUrl)",
// ID de cliente de la aplicación OAuth2 clientId = "(application clientId)",
// (Opcional) // Secreto de cliente de la aplicación OAuth2 // Si se omite, se mostrará el diálogo de inicio de sesión clientSecret = "(application client secret)", ) }, onMapLoaded = { // Obtener ViewHolder arcGisMapViewHolder = mapViewState.getMapViewHolder() } ) {}
// IU de autenticación (para inicio de sesión de usuario). Se usa como respaldo para autenticación híbrida. Authenticator(authenticatorState = authenticatorState)}