Questa pagina mostra come controllare il comportamento di collisione per un indicatore.
Impostare il comportamento di collisione per un indicatore
Il comportamento di collisione controlla la modalità di 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 di collisione:
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: (impostazione predefinita) 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 ulteriori 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 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);