Comportamento di collisione

Seleziona la piattaforma: Android iOS JavaScript

Questa pagina mostra come controllare il comportamento della sovrapposizione di un indicatore.

Impostare il comportamento della sovrapposizione per un indicatore

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

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

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

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

  • CollisionBehavior.REQUIRED: (valore predefinito) mostra sempre l'indicatore, indipendentemente dalla collisione.
  • CollisionBehavior.REQUIRED_AND_HIDES_OPTIONAL mostra sempre l'indicatore, indipendentemente dalla collisione, e nasconde 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 mostrato quello con zIndex più alto. Se hanno lo stesso zIndex, viene mostrato quello con la posizione verticale dello schermo più bassa. Per maggiori informazioni su zIndex, vedi Indice z degli indicatori.

    • Se due indicatori visualizzazione si sovrappongono, viene mostrato quello con zIndex più alto. Se hanno lo stesso zIndex, l'ultimo indicatore creato si sovrappone a tutti gli indicatori creati prima.

    • Poiché gli indicatori visualizzazione vengono disegnati su un livello sopra gli indicatori bitmap, gli indicatori visualizzazione si sovrappongono agli indicatori bitmap. Pertanto, per un migliore controllo della collisione, devi provare a utilizzare indicatori dello stesso tipo.

L'esempio seguente mostra l'impostazione del comportamento della sovrapposizione 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);