Comportamento di collisione

Seleziona la piattaforma: Android iOS JavaScript

Questa pagina mostra come controllare il comportamento della collisione per un indicatore.

Imposta il comportamento della collisione per un indicatore

La modalità di collisione controlla la modalità di visualizzazione di un indicatore in caso di collisione (sovrapposizione) con un altro indicatore. Il modo in cui crei indicatori avanzati determina il funzionamento del comportamento di collisione:

  • Gli indicatori avanzati creati utilizzando BitmapDescriptorFactory sono indicati come indicatori bitmap. Questi indicatori sono disegnati dalla mappa principale.

  • Tutti gli altri indicatori avanzati, inclusi quelli creati con il metodo AdvancedMarkerOptions.iconView(), sono denominati indicatori di vista e sono disegnati su un livello sopra la mappa principale.

Per impostare il comportamento della collisione, imposta AdvancedMarkerOptions.collisionBehavior su uno dei seguenti:

  • CollisionBehavior.REQUIRED: (impostazione predefinita) mostra sempre l'indicatore indipendentemente dalla collisione.
  • CollisionBehavior.REQUIRED_AND_HIDES_OPTIONAL Mostra sempre l'indicatore indipendentemente dalla collisione e nascondi tutti gli indicatori o le etichette OPTIONAL_AND_HIDES_LOWER_PRIORITY che si sovrappongono all'indicatore.
  • CollisionBehavior.OPTIONAL_AND_HIDES_LOWER_PRIORITY Mostra l'indicatore solo se non si sovrappone ad altri indicatori.

    • Se due indicatori bitmap si sovrappongono, viene visualizzato quello con il valore zIndex più alto. Se hanno lo stesso zIndex, viene mostrato quello con la posizione verticale inferiore. Per ulteriori informazioni su zIndex, consulta la sezione z-index di Marker.

    • Se due indicatori di vista si sovrappongono, viene mostrato quello con il valore zIndex più alto. Se hanno lo stesso zIndex, l'ultimo indicatore creato si sovrappone a quelli creati prima.

    • Poiché gli indicatori di vista sono disegnati su un livello sopra gli indicatori bitmap, gli indicatori di vista si sovrappongono a quelli bitmap. Dovresti quindi provare a usare indicatori dello stesso tipo per controllare meglio le collisioni.

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

Kotlin

// Collision behavior can only be changed in the AdvancedMarkerOptions object.
// Changes to collision behavior after a marker has been created are not possible
val collisionBehavior: Int = AdvancedMarkerOptions.CollisionBehavior.REQUIRED_AND_HIDES_OPTIONAL
val advancedMarkerOptions: AdvancedMarkerOptions = AdvancedMarkerOptions()
    .position(latLng)
    .collisionBehavior(collisionBehavior)
val marker: Marker = map.addMarker(advancedMarkerOptions)

Java

// Collision behavior can only be changed in the AdvancedMarkerOptions object.
// Changes to collision behavior after a marker has been created are not possible
int collisionBehavior = AdvancedMarkerOptions.CollisionBehavior.REQUIRED_AND_HIDES_OPTIONAL;
AdvancedMarkerOptions options =
        new AdvancedMarkerOptions()
            .position(latLng)
            .collisionBehavior(collisionBehavior);
Marker marker = map.addMarker(options);