Comportamento di collisione

Seleziona la piattaforma: Android iOS JavaScript

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

Imposta il comportamento della sovrapposizione per un indicatore

Il comportamento della sovrapposizione controlla il modo in cui un indicatore viene visualizzato se si sovrappone a un altro indicatore. Il modo in cui crei un indicatore avanzato determina il funzionamento del comportamento della sovrapposizione:

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

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

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

  • CollisionBehavior.REQUIRED: (predefinito) mostra sempre l'indicatore indipendentemente dalla collisione.
  • CollisionBehavior.REQUIRED_AND_HIDES_OPTIONAL Mostra sempre l'indicatore indipendentemente dalla collisione e nascondi eventuali indicatori o etichette OPTIONAL_AND_HIDES_LOWER_PRIORITY che si sovrapporrebbero 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 il valore zIndex più alto. Se hanno lo stesso zIndex, viene mostrato quello con la posizione verticale dello schermo più bassa. Per ulteriori informazioni su zIndex, consulta Z-index dell'indicatore.

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

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

L'esempio seguente mostra come impostare il 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);