MapboxMapViewHolder
Descripción General
Section titled “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
Section titled “Propiedades”mapView: MapView: MapView generado dentro del componente MapboxViewmap: Mapbox: Clase Mapbox 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)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
Section titled “Obtener MapboxMapViewHolder”El MapboxMapViewHolder se puede obtener a través de getMapViewHolder() después de que se inicializa el mapa.
// Mapboxval mapboxState = rememberMapboxMapViewState()val mapboxHolder: MapboxMapViewHolder? = mapboxState.getMapViewHolder()Ejemplo
Section titled “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 } } }}
@Composablefun 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() } ) {}}