HereMapViewHolder
Descripción General
Para acceder a las funciones específicas del SDK de HERE, use el HereMapViewHolder.
La definición de HereMapViewHolder es la siguiente:
typealias HereViewHolder = MapViewHolderInterface<MapView, MapScene>
class HereViewHolder( override val mapView: MapView, override val map: MapScene,) : MapViewHolderInterface<MapView, MapScene> { fun toScreenOffset(position: GeoPointInterface): Offset? suspend fun fromScreenOffset(offset: Offset): GeoPoint?}Propiedades
mapView: MapView: MapView generado dentro del componente HereMapViewmap: MapScene: Clase MapScene 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)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 HereMapViewHolder
El HereMapViewHolder se puede obtener a través de getMapViewHolder() después de que se inicializa el mapa.
// HERE Mapsval hereState = rememberHereMapViewState()val hereHolder: HereMapViewHolder? = hereState.getMapViewHolder()Ejemplo
@Composablefun MapViewHolderHereMapsExample(modifier: Modifier = Modifier) { // Posición de la cámara del mapa val mapViewState = rememberHereMapViewState( cameraPosition = MapCameraPosition( position = GeoPoint.fromLatLong(35.6812, 139.7671), zoom = 12.0 ), )
// Hacerlo mutableStateOf para que se vuelva a renderizar cuando mapScheme cambie var mapScheme by remember { mutableStateOf(MapScheme.NORMAL_DAY) }
// Obtener ViewHolder val hereMapViewHolder = mapViewState.getMapViewHolder() LaunchedEffect(hereMapViewHolder, mapScheme) { if (hereMapViewHolder == null) return@LaunchedEffect hereMapViewHolder.map.loadScene(mapScheme) { errorCode -> if (errorCode != null) { Log.e("HERE", "Failed to load map scene: ${errorCode.name}") } } }
Column(modifier = modifier) { Row( modifier = Modifier.fillMaxWidth(), ) { Spacer(modifier = Modifier.size(20.dp))
// Visualización de mapa normal Button(onClick = { mapScheme = MapScheme.NORMAL_DAY }) { Text( text = "Normal" ) } Spacer(modifier = Modifier.size(20.dp))
// Visualización de imágenes satelitales Button(onClick = { mapScheme = MapScheme.SATELLITE }) { Text( text = "Satellite" ) } }
HereMapView( state = mapViewState, modifier = Modifier.fillMaxSize(), ) {} }}