Skip to content

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 HereMapView
  • map: 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 Maps
val hereState = rememberHereMapViewState()
val hereHolder: HereMapViewHolder? = hereState.getMapViewHolder()

Ejemplo

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