Skip to content

ArcGISMapViewHolder

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

  • mapView: WrapSceneView: WrapSceneView para envolver el SceneView
  • map: SceneView: Clase ArcGISScene para manipular el MapView

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

El ArcGISMapViewHolder se puede obtener a través de getMapViewHolder() después de que se inicializa el mapa.

// ArcGIS
val arcgisState = rememberArcGISMapViewState()
val arcgisHolder: ArcGISMapViewHolder? = arcgisState.getMapViewHolder();

Ejemplo

@Composable
fun 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)
}