Controlla il comportamento di collisione, l'altitudine e la visibilità

Seleziona la piattaforma: Android iOS JavaScript

Questa pagina mostra come controllare i seguenti aspetti dei marcatori avanzati:

  • Impostare il comportamento di collisione per un indicatore
  • Imposta l'altitudine del marker
  • Controllare la visibilità dei marker in base al livello di zoom della mappa

Impostare il comportamento di collisione per un indicatore

Il comportamento di collisione controlla la modalità di visualizzazione di un indicatore in caso di collisione (sovrapposizione) con un altro indicatore. Il comportamento di collisione è supportato solo sulle mappe vettoriali.

Per impostare il comportamento di collisione, imposta AdvancedMarkerElement.collisionBehavior su uno dei seguenti valori:

  • REQUIRED: (impostazione predefinita) mostra sempre il marcatore indipendentemente dalla collisione.
  • OPTIONAL_AND_HIDES_LOWER_PRIORITY Mostra il marcatore solo se non si sovrappone ad altri marcatori. Se due indicatori di questo tipo si sovrappongono, viene visualizzato quello con zIndex più elevato. Se hanno lo stesso zIndex, viene visualizzato quello con la posizione verticale dello schermo più bassa.
  • REQUIRED_AND_HIDES_OPTIONAL Mostra sempre l'indicatore indipendentemente dalla collisione e nascondi gli indicatori o le etichette OPTIONAL_AND_HIDES_LOWER_PRIORITY che si sovrappongono all'indicatore.

Il seguente esempio mostra l'impostazione del comportamento di collisione per un indicatore:

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,
});

Imposta l'altitudine del marker

Nelle mappe vettoriali, puoi impostare l'altitudine alla quale viene visualizzato un indicatore. Questa impostazione è utile per far apparire correttamente i marcatori in relazione ai contenuti della mappa 3D. Per impostare l'altitudine di un indicatore, specifica LatLngAltitude come valore per l'opzione 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 },
});

Controllare la visibilità dei marker in base al livello di zoom della mappa

Visualizza la modifica della visibilità dei marcatori (inizia riducendo lo zoom):

Per controllare la visibilità di un indicatore avanzato, crea un listener zoom_changed e aggiungi una funzione condizionale per impostare AdvancedMarkerElement.map su null se lo zoom supera il livello specificato, come mostrato nell'esempio seguente:

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;
  }
});

Passaggi successivi

Rendere i segnaposto cliccabili e accessibili