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
BitmapDescriptorFactorysono 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_OPTIONALmostra sempre l'indicatore, indipendentemente dalla collisione, e nasconde tutti gli indicatori o le etichetteOPTIONAL_AND_HIDES_LOWER_PRIORITYche si sovrappongono all'indicatore.CollisionBehavior.OPTIONAL_AND_HIDES_LOWER_PRIORITYmostra l'indicatore solo se non si sovrappone ad altri indicatori.Se due indicatori bitmap si sovrappongono, viene mostrato quello con
zIndexpiù alto. Se hanno lo stessozIndex, viene mostrato quello con la posizione verticale dello schermo più bassa. Per maggiori informazioni suzIndex, vedi Indice z degli indicatori.Se due indicatori visualizzazione si sovrappongono, viene mostrato quello con
zIndexpiù alto. Se hanno lo stessozIndex, 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);