Marcador
Un marcador es una anotación de punto que se puede colocar en el mapa en ubicaciones geográficas específicas. Admite iconos personalizados, interacciones y animaciones.
Funciones Composable
Section titled “Funciones Composable”Cuando tienes pocos marcadores, especificar opciones directamente es más fácil.
Especificar id puede reducir Recomposiciones innecesarias.
@Composablefun MapViewScope.Marker( position: GeoPointInterface, clickable: Boolean = true, draggable: Boolean = false, icon: MarkerIconInterface? = null, extra: Serializable? = null, id: String? = null, onClick: OnMarkerEventHandler? = null, onDragStart: OnMarkerEventHandler? = null, onDrag: OnMarkerEventHandler? = null, onDragEnd: OnMarkerEventHandler? = null, onAnimateStart: OnMarkerEventHandler? = null, onAnimateEnd: OnMarkerEventHandler? = null,)Parámetros
Section titled “Parámetros”position: Coordenadas geográficas que representan la posición del marcador (GeoPointInterface)clickable: Si el marcador responde a clics (por defecto:true)draggable: Si el marcador se puede arrastra (por defecto:false)icon: Icono personalizado para el marcador (MarkerIconInterface?)extra: Datos adicionales asociados al marcador (Serializable?)id: Identificador único para el marcador (String?, se genera automáticamente si no se especifica)onClick: Se invoca cuando se hace clic en el marcador.onDragStart: Se invoca cuando se comienza a arrastrar el marcador.onDrag: Se invoca mientras se arrastra el marcador.onDragEnd: Se invoca cuando finaliza la operación de arrastre del marcador.onAnimateStart: Se activa cuando comienzaanimate().onAnimateEnd: Se activa cuando finalizaanimate().
Cuando tienes muchos marcadores o necesitas mover marcadores, se recomienda usar este enfoque.
Especificar id puede reducir Recomposiciones innecesarias.
@Composablefun MapViewScope.Marker(state: MarkerState)Parameter
Section titled “Parameter”state: Gestiona el estado del marcador MarkerState.
Tipos de iconos
Section titled “Tipos de iconos”DefaultMarkerIcon
Section titled “DefaultMarkerIcon”Icono de marcador estándar con apariencia personalizable:
DefaultIcon( scale: Float = 1.0f, label: String? = null, fillColor: Color = Color.Red, strokeColor: Color = Color.Black, strokeWidth: Dp = 1.dp, labelTextColor: Color = Color.White, labelStrokeColor: Color? = null, debug: Boolean = false)DrawableDefaultIcon
Section titled “DrawableDefaultIcon”Marcador que utiliza un recurso Drawable como fondo:
DrawableDefaultIcon( backgroundDrawable: Drawable, scale: Float = 1.0f, strokeColor: Color? = null, strokeWidth: Dp = 1.dp)ImageIcon
Section titled “ImageIcon”Marcador que utiliza una imagen Drawable personalizada:
ImageIcon( drawable: Drawable, anchor: Offset = Offset(0.5f, 0.5f), debug: Boolean = false)Ejemplos de uso
Section titled “Ejemplos de uso”Marcador básico
Section titled “Marcador básico”// Reemplaza MapView con el componente del proveedor de mapas que hayas elegido, como GoogleMapView o MapboxMapViewMapView(state = mapViewState) { Marker( position = GeoPoint.fromLatLong(37.7749, -122.4194), extra = "San Francisco", id = "san-francisco-marker" )}Marcador con icono personalizado
Section titled “Marcador con icono personalizado”Reemplaza MapView con el componente del proveedor de mapas que hayas elegido, como GoogleMapView o MapboxMapViewMapView(state = mapViewState) { Marker( position = GeoPoint.fromLatLong(37.7749, -122.4194), icon = DefaultIcon( scale = 1.5f, label = "SF", fillColor = Color.Blue, strokeColor = Color.White, strokeWidth = 2.dp ), extra = "San Francisco with custom icon", id = "custom-sf-marker" )}Marcador arrastrável
Section titled “Marcador arrastrável”@Composablefun DraggableMarkerExample() { val markerState = MarkerState( position = GeoPoint.fromLatLong(37.7749, -122.4194), draggable = true, icon = DefaultIcon( label = "Drag me", fillColor = Color.Green ), onDrag = { markerState -> println("position: ${GeoPoint.from(markerState.position).toUrlValue(6)}") } )
// Reemplaza MapView con el componente del proveedor de mapas que hayas elegido, como GoogleMapView o MapboxMapView MapView( state = mapViewState ) { Marker(markerState) }}Múltiples marcadores con iconos diferentes
Section titled “Múltiples marcadores con iconos diferentes”// Reemplaza MapView con el componente del proveedor de mapas que hayas elegido, como GoogleMapView o MapboxMapViewMapView(state = mapViewState) { // Default icon with different scales Marker( position = GeoPoint.fromLatLong(37.7749, -122.4194), icon = DefaultIcon(scale = 0.7f, label = "Small") )
Marker( position = GeoPoint.fromLatLong(37.7849, -122.4094), icon = DefaultIcon(scale = 1.0f, label = "Normal") )
Marker( position = GeoPoint.fromLatLong(37.7949, -122.3994), icon = DefaultIcon(scale = 1.4f, label = "Large") )
// Custom colored marker Marker( position = GeoPoint.fromLatLong(37.7649, -122.4294), icon = DefaultIcon( fillColor = Color.Yellow, strokeColor = Color.Black, strokeWidth = 2.dp, label = "Custom" ) )
// Drawable icon marker val context = LocalContext.current AppCompatResources.getDrawable(context, R.drawable.custom_icon)?.let { drawable -> Marker( position = GeoPoint.fromLatLong(37.7549, -122.4394), icon = DrawableDefaultIcon( backgroundDrawable = drawable, scale = 1.2f ) ) }}Animación
Section titled “Animación”Drop- Animación donde el marcador se mueve desde la parte superior de la pantalla a la posiciónBounce- El marcador se mueve desde la parte superior de la pantalla a la posición y luego rebota