Skip to content

GoogleMapViewHolder

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

  • mapView: MapView: MapView generado dentro del componente GoogleMapView
  • map: GoogleMap: Clase GoogleMap 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 GoogleMapViewHolder

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

// Google Maps
val googleMapState = rememberGoogleMapViewState()
val googleHolder: GoogleMapViewHolder? = googleMapState.getMapViewHolder()

Ejemplo

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