HereMapViewHolder
Overview
Section titled “Overview”To access HERE SDK-specific features, use HereMapViewHolder.
The definition of HereMapViewHolder is as follows:
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?}Properties
Section titled “Properties”mapView: MapView: MapView generated internally by the HereMapView componentmap: MapScene: MapScene class for manipulating the MapView
Methods
Section titled “Methods”toScreenOffset(position: GeoPointInterface): Offset?: Returns the map position indicated by GeoPointInterface as a Dp value with the upper left corner of MapView as (0,0)fromScreenOffset(offset: Offset): GeoPoint?: Returns the GeoPointInterface position on the map at the position specified by the Dp value with the upper left corner of MapView as (0,0)
Getting HereMapViewHolder
Section titled “Getting HereMapViewHolder”HereMapViewHolder can be obtained through getMapViewHolder() after map initialization.
// HERE Mapsval hereState = rememberHereMapViewState()val hereHolder: HereMapViewHolder? = hereState.getMapViewHolder()Sample
Section titled “Sample”@Composablefun MapViewHolderHereMapsExample(modifier: Modifier = Modifier) { // Map camera position val mapViewState = rememberHereMapViewState( cameraPosition = MapCameraPosition( position = GeoPoint.fromLatLong(35.6812, 139.7671), zoom = 12.0 ), )
// Make it mutableStateOf so it re-renders when mapScheme changes var mapScheme by remember { mutableStateOf(MapScheme.NORMAL_DAY) }
// Get 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))
// Normal map display Button(onClick = { mapScheme = MapScheme.NORMAL_DAY }) { Text( text = "Normal" ) } Spacer(modifier = Modifier.size(20.dp))
// Satellite imagery display Button(onClick = { mapScheme = MapScheme.SATELLITE }) { Text( text = "Satellite" ) } }
HereMapView( state = mapViewState, modifier = Modifier.fillMaxSize(), ) {} }}