Comportamento di collisione

Seleziona la piattaforma: Android iOS JavaScript

Questa pagina mostra come controllare il comportamento di collisione di un indicatore.

Imposta il comportamento della collisione per un indicatore

Il comportamento di collisione controlla il modo in cui viene visualizzato un indicatore se entra in collisione (si sovrappone) con un altro indicatore. Il modo in cui crei gli indicatori avanzati determina il funzionamento del comportamento di collisione:

  • Gli indicatori avanzati creati utilizzando BitmapDescriptorFactory sono chiamati indicatori bitmap. Questi indicatori sono tracciati la mappa di base.

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

Per impostare il comportamento in caso di collisione, imposta AdvancedMarkerOptions.collisionBehavior su una delle seguenti opzioni:

  • CollisionBehavior.REQUIRED: (predefinito) viene sempre visualizzato l'indicatore indipendentemente della collisione.
  • CollisionBehavior.REQUIRED_AND_HIDES_OPTIONAL Mostra sempre l'indicatore indipendentemente dalle collisioni e nascondi eventuali OPTIONAL_AND_HIDES_LOWER_PRIORITY indicatori o etichette 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ù elevato. Se hanno lo stesso zIndex, viene mostrato quello con la posizione dello schermo verticale più bassa. Per ulteriori informazioni su zIndex, consulta l'articolo sull'indicatore z-index.

    • Se due indicatori di visualizzazione si sovrappongono, quello con il valore zIndex più alto è come mostrato nell'immagine. Se hanno lo stesso zIndex, l'ultimo indicatore creato sovrappone tutti gli indicatori creati prima.

    • Poiché gli indicatori di visualizzazione vengono disegnati su un livello sopra gli indicatori di bitmap, gli indicatori di visualizzazione sovrappongono quelli di bitmap. Pertanto, ti consigliamo di utilizzare indicatori dello stesso tipo per un migliore controllo delle collisioni.

L'esempio seguente mostra l'impostazione del comportamento della 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 = CollisionBehavior.REQUIRED_AND_HIDES_OPTIONAL
val advancedMarkerOptions: AdvancedMarkerOptions = AdvancedMarkerOptions()
    .position(LatLng(10.0, 10.0))
    .collisionBehavior(collisionBehavior)

val marker: Marker = map.addMarker(advancedMarkerOptions) ?: error("Failed to add marker")

      

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(new LatLng(10.0, 10.0))
        .collisionBehavior(collisionBehavior);

Marker marker = map.addMarker(options);