GoogleMapViewHolder
Descripción General
Section titled “Descripción General”Para acceder a las funciones específicas de la API de Google Maps, use el GoogleMapViewHolder.
La definición de GoogleMapViewHolder es la siguiente:
typealias GoogleMapViewHolder = MapViewHolderInterface<MapView, GoogleMap>
class GoogleMapViewHolder( override val mapView: MapView, override val map: GoogleMap,) : MapViewHolderInterface<MapView, GoogleMap> { fun toScreenOffset(position: GeoPointInterface): Offset? suspend fun fromScreenOffset(offset: Offset): GeoPoint?}Propiedades
Section titled “Propiedades”mapView: MapView: MapView generado dentro del componente GoogleMapViewmap: GoogleMap: Clase GoogleMap 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)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 GoogleMapViewHolder
Section titled “Obtener GoogleMapViewHolder”El GoogleMapViewHolder se puede obtener a través de getMapViewHolder() después de que se inicializa el mapa.
// Google Mapsval googleMapState = rememberGoogleMapViewState()val googleHolder: GoogleMapViewHolder? = googleMapState.getMapViewHolder()Ejemplo
Section titled “Ejemplo”@Composablefun MapViewHolderGoogleMapsExample(modifier: Modifier = Modifier) { val context = LocalContext.current
// Posición de la cámara del mapa val mapViewState = rememberGoogleMapViewState( cameraPosition = MapCameraPosition( position = GeoPoint.fromLatLong(28.53456, 77.192845), zoom = 12.0 ), )
// Usando mutableStateOf, recomponer cuando cambie mapStyle var mapStyle by remember { mutableStateOf<MapStyleOptions?>(null) }
// Obtener ViewHolder val googleMapViewHolder = mapViewState.getMapViewHolder() LaunchedEffect(googleMapViewHolder, mapStyle) { if (googleMapViewHolder == null) return@LaunchedEffect googleMapViewHolder.map.setMapStyle(mapStyle) }
Column(modifier = modifier) { Row( modifier = Modifier.fillMaxWidth(), ) { Spacer(modifier = Modifier.size(20.dp))
// Google Maps normal Button(onClick = { mapStyle = null }) { Text( text = "Normal" ) } Spacer(modifier = Modifier.size(20.dp))
// Diseño de mapa simplificado Button(onClick = { mapStyle = MapStyleOptions.loadRawResourceStyle(context, R.raw.style_map) }) { Text( text = "Simplified" ) } }
GoogleMapView( state = mapViewState, modifier = Modifier.fillMaxSize(), ) {} }}