Cette page explique comment contrôler les aspects suivants des repères avancés :
- Définir le comportement d'un repère en cas de collision
- Définir l'altitude du repère
- Contrôler la visibilité du repère par niveau de zoom sur la carte
Définir le comportement d'un repère en cas de collision
Le comportement en cas de collision détermine comment un repère s'affiche s'il entre en collision avec un autre repère (s'ils se chevauchent). Cette fonctionnalité n'est prise en charge qu'avec les cartes vectorielles.
Pour définir le comportement en cas de collision, définissez AdvancedMarkerElement.collisionBehavior
sur l'une des valeurs suivantes :
REQUIRED
(option par défaut) : le repère s'affiche toujours, quelle que soit la collision.OPTIONAL_AND_HIDES_LOWER_PRIORITY
: le repère s'affiche uniquement s'il n'en chevauche pas d'autres. Si deux repères de ce type se chevauchent, celui avec lezIndex
le plus élevé est affiché. S'ils ont le mêmezIndex
, celui dont la position verticale à l'écran est la plus basse est affiché.REQUIRED_AND_HIDES_OPTIONAL
: le repère s'affiche toujours peu importe le cas de collision. Les repères ou libellésOPTIONAL_AND_HIDES_LOWER_PRIORITY
qui chevauchent le repère sont masqués.
L'exemple suivant montre comment définir le comportement en cas de collision pour un repère :
TypeScript
const advancedMarker = new AdvancedMarkerElement({ position: new google.maps.LatLng({ lat, lng }), map, collisionBehavior: collisionBehavior, });
JavaScript
const advancedMarker = new AdvancedMarkerElement({ position: new google.maps.LatLng({ lat, lng }), map, collisionBehavior: collisionBehavior, });
Définir l'altitude du repère
Sur les cartes vectorielles, vous pouvez définir l'altitude à laquelle un repère s'affiche. Cela permet d'afficher correctement les repères par rapport au contenu de la carte 3D. Pour définir l'altitude d'un repère, spécifiez LatLngAltitude
comme valeur pour l'option MarkerView.position
:
TypeScript
const pin = new PinElement({ background: '#4b2e83', borderColor: '#b7a57a', glyphColor: '#b7a57a', scale: 2.0, }); const markerView = new AdvancedMarkerElement({ map, content: pin.element, // Set altitude to 20 meters above the ground. position: { lat: 47.65170843460547, lng: -122.30754, altitude: 20 } as google.maps.LatLngAltitudeLiteral, });
JavaScript
const pin = new PinElement({ background: "#4b2e83", borderColor: "#b7a57a", glyphColor: "#b7a57a", scale: 2.0, }); const markerView = new AdvancedMarkerElement({ map, content: pin.element, // Set altitude to 20 meters above the ground. position: { lat: 47.65170843460547, lng: -122.30754, altitude: 20 }, });
Contrôler la visibilité du repère par niveau de zoom sur la carte
Observez le changement de visibilité des repères (commencez par faire un zoom arrière).
Pour contrôler la visibilité d'un repère avancé, créez un écouteur zoom_changed
, puis ajoutez une fonction conditionnelle pour définir AdvancedMarkerElement.map
sur null
si le zoom dépasse le niveau spécifié, comme indiqué dans l'exemple suivant :
TypeScript
map.addListener('zoom_changed', () => { const zoom = map.getZoom(); if (zoom) { // Only show each marker above a certain zoom level. marker01.map = zoom > 14 ? map : null; marker02.map = zoom > 15 ? map : null; marker03.map = zoom > 16 ? map : null; marker04.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. marker01.map = zoom > 14 ? map : null; marker02.map = zoom > 15 ? map : null; marker03.map = zoom > 16 ? map : null; marker04.map = zoom > 17 ? map : null; } });