En esta página, te indicamos cómo controlar los siguientes aspectos de Marcadores avanzados:
- Cómo configurar el comportamiento de colisión de un marcador
- Cómo configurar la altitud de un marcador
- Cómo controlar la visibilidad de un marcador según el nivel de zoom del mapa
Cómo configurar el comportamiento de colisión de un marcador
El comportamiento de colisión controla cómo se mostrará un marcador si se superpone con otro. Esta conducta solo se admite en los mapas de vectores.
Para configurar el comportamiento de colisión, establece AdvancedMarkerView.collisionBehavior
en una de las siguientes opciones:
REQUIRED
: (valor predeterminado) Indica que el marcador debe mostrarse siempre, independientemente de la colisión.OPTIONAL_AND_HIDES_LOWER_PRIORITY
: Indica que solo debe mostrarse el marcador si no se superpone con otros. Si dos marcadores de este tipo se superponen, se mostrará el que tenga el valor dezIndex
más alto. Si tienen el mismo valor dezIndex
, se mostrará el que tenga la posición vertical más baja en la pantalla.REQUIRED_AND_HIDES_OPTIONAL
: Indica que el marcador debe mostrarse siempre, independientemente de la colisión, y que se deben ocultar los marcadores o etiquetasOPTIONAL_AND_HIDES_LOWER_PRIORITY
que se superpongan con él.
En el siguiente ejemplo, se muestra la configuración del comportamiento de colisión de un marcador:
TypeScript
const advancedMarker = new google.maps.marker.AdvancedMarkerView({ position: new google.maps.LatLng({ lat, lng }), map, collisionBehavior: collisionBehavior, });
JavaScript
const advancedMarker = new google.maps.marker.AdvancedMarkerView({ position: new google.maps.LatLng({ lat, lng }), map, collisionBehavior: collisionBehavior, });
Cómo configurar la altitud de un marcador
En los mapas de vectores, puedes configurar la altitud en la que aparece un marcador. Esto es útil para que los marcadores aparezcan correctamente en relación con el contenido del mapa 3D. Para establecer la altitud de un marcador, especifica un valor de LatLngAltitude
para la opción MarkerView.position
:
TypeScript
const pinView = new google.maps.marker.PinView({ background: '#4b2e83', borderColor: '#b7a57a', glyphColor: '#b7a57a', scale: 2.0, }); const markerView = new google.maps.marker.AdvancedMarkerView({ map, content: pinView.element, // Set altitude to 20 meters above the ground. position: { lat: 47.65170843460547, lng: -122.30754, altitude: 20 } as google.maps.LatLngAltitudeLiteral, });
JavaScript
const pinView = new google.maps.marker.PinView({ background: "#4b2e83", borderColor: "#b7a57a", glyphColor: "#b7a57a", scale: 2.0, }); const markerView = new google.maps.marker.AdvancedMarkerView({ map, content: pinView.element, // Set altitude to 20 meters above the ground. position: { lat: 47.65170843460547, lng: -122.30754, altitude: 20 }, });
Cómo controlar la visibilidad de un marcador según el nivel de zoom del mapa
Observa el cambio en la visibilidad de los marcadores (aleja el mapa):
Para controlar la visibilidad de un marcador de Advanced Markers, crea un objeto de escucha zoom_changed
y agrega una función condicional para establecer AdvancedMarkerView.map
en null
si el zoom supera el nivel especificado, como se muestra en el siguiente ejemplo:
TypeScript
map.addListener('zoom_changed', () => { const zoom = map.getZoom(); if (zoom) { // Only show each marker above a certain zoom level. markerView01.map = zoom > 14 ? map : null; markerView02.map = zoom > 15 ? map : null; markerView03.map = zoom > 16 ? map : null; markerView04.map = zoom > 17 ? map : null; } });
JavaScript
map.addListener("zoom_changed", () => { const zoom = map.getZoom(); if (zoom) { // Only show each marker above a certain zoom level. markerView01.map = zoom > 14 ? map : null; markerView02.map = zoom > 15 ? map : null; markerView03.map = zoom > 16 ? map : null; markerView04.map = zoom > 17 ? map : null; } });
Próximos pasos
Configura los marcadores para que sean accesibles y admitan clics