Skip to content

MapboxMapViewHolder

Descripción General

Para acceder a las funciones específicas del SDK de Mapbox, use el MapboxMapViewHolder. La definición de MapboxMapViewHolder es la siguiente:

typealias MapboxMapViewHolder = MapViewHolderInterface<MapView, MapboxMap>
class MapboxMapViewHolder(
override val mapView: MapView,
override val map: MapboxMap,
) : MapViewHolderInterface<MapView, MapboxMap>,
MapboxLifecycleObserver {
fun toScreenOffset(position: GeoPointInterface): Offset?
fun fromScreenOffsetSync(offset: Offset): GeoPoint?
fun fromScreenOffset(coordinate: ScreenCoordinate): GeoPoint?
suspend fun fromScreenOffset(offset: Offset): GeoPoint?
}

Propiedades

  • mapView: MapView: MapView generado dentro del componente MapboxView
  • map: Mapbox: Clase Mapbox 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)
  • fromScreenOffsetSync(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)
  • fromScreenOffset(coordinate: ScreenCoordinate): GeoPoint?: Devuelve la posición GeoPointInterface en el mapa para la posición especificada por el valor ScreenCoordinate 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 MapboxMapViewHolder

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

// Mapbox
val mapboxState = rememberMapboxMapViewState()
val mapboxHolder: MapboxMapViewHolder? = mapboxState.getMapViewHolder()

Ejemplo

class MainActivity : ComponentActivity() {
lateinit var permissionsManager: PermissionsManager
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
enableEdgeToEdge()
if (PermissionsManager.areLocationPermissionsGranted(this)) {
// Proceso después del permiso de acceso a la ubicación (ej: habilitar LocationComponent del SDK de Maps para mostrar la ubicación del dispositivo)
} else {
permissionsManager = PermissionsManager(this.permissionsListener)
permissionsManager.requestLocationPermissions(this)
}
setContent {
MapConductorSDKTheme {
Scaffold(modifier = Modifier.fillMaxSize()) { innerPadding ->
BasicMapExample(
modifier =
Modifier
.padding(innerPadding)
.fillMaxSize(),
)
}
}
}
}
var permissionsListener: PermissionsListener = object : PermissionsListener {
override fun onExplanationNeeded(permissionsToExplain: List<String>) {
// Mostrar explicación para obtener permiso de acceso a la ubicación
}
override fun onPermissionResult(granted: Boolean) {
if (granted) {
// Proceso después del permiso de acceso a la ubicación (ej: habilitar LocationComponent del SDK de Maps para mostrar la ubicación del dispositivo)
} else {
// El usuario denegó el permiso
}
}
}
}
@Composable
fun BasicMapExample(modifier: Modifier = Modifier) {
val mapViewState = rememberMapboxMapViewState(
cameraPosition = MapCameraPosition(
position = GeoPoint.fromLatLong(35.706400, 139.763635),
zoom = 13.0
),
)
// Obtener ViewHolder
var mapboxMapViewHolder by remember { mutableStateOf<MapboxMapViewHolder?>(null) }
LaunchedEffect(mapboxMapViewHolder) {
mapboxMapViewHolder?.let { holder ->
with(holder.mapView) {
location.locationPuck = createDefault2DPuck(withBearing = true)
location.enabled = true
location.pulsingEnabled = true
location.puckBearing = PuckBearing.COURSE
location.puckBearingEnabled = true
viewport.transitionTo(
targetState = viewport.makeFollowPuckViewportState(),
transition = viewport.makeImmediateViewportTransition()
)
}
}
}
MapboxMapView(
state = mapViewState,
modifier = modifier,
onMapLoaded = {
mapboxMapViewHolder = mapViewState.getMapViewHolder()
}
) {}
}