Comportamento di collisione

Seleziona la piattaforma: Android iOS JavaScript

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

Impostare il comportamento di collisione per un indicatore

Il comportamento di collisione controlla la modalità di visualizzazione di un indicatore se si scontra (si sovrappone) con un altro indicatore. Il modo in cui crei un indicatore avanzato determina il funzionamento del comportamento di collisione:

  • I marcatori avanzati creati utilizzando BitmapDescriptorFactory sono chiamati marcatori bitmap. Questi indicatori vengono disegnati dalla mappa principale.

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

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

  • CollisionBehavior.REQUIRED: (impostazione predefinita) mostra sempre il marcatore indipendentemente dalla collisione.
  • CollisionBehavior.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.
  • CollisionBehavior.OPTIONAL_AND_HIDES_LOWER_PRIORITY Mostra il marcatore solo se non si sovrappone ad altri marcatori.

    • Se due indicatori bitmap 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. Per maggiori informazioni su zIndex, vedi Indice z dei marker.

    • Se due indicatori di visualizzazione si sovrappongono, viene visualizzato quello con il zIndex più alto. Se hanno lo stesso zIndex, l'ultimo marcatore creato si sovrappone a tutti i marcatori creati prima.

    • Poiché gli indicatori di visualizzazione vengono disegnati su un livello sopra gli indicatori bitmap, gli indicatori di visualizzazione si sovrappongono agli indicatori bitmap. Pertanto, dovresti provare a utilizzare marcatori dello stesso tipo per un migliore controllo delle collisioni.

Il seguente esempio 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 = 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);