Gestione di indicatori, etichette e collisioni dei PDI

Questa pagina spiega come gestire le collisioni tra gli indicatori che aggiungi alla mappa e le etichette predefinite, come i punti di interesse (PDI) o i nomi delle strade.

Prima di iniziare

Per gestire le collisioni tra indicatori ed etichette, devi utilizzare un ID mappa.

Se utilizzi un'immagine bitmap di una mappa in modalità Lite, non puoi gestire le collisioni tra indicatori ed etichette.

Specificare le priorità degli indicatori

Utilizza la proprietà Marker.CollisionBehavior per specificare la priorità di un indicatore.

Usa uno dei seguenti valori:

  • REQUIRED - Predefinito. Richiede la visualizzazione di un indicatore che si sovrappone ad altri indicatori, etichette e PDI.
  • OPTIONAL_AND_HIDES_LOWER_PRIORITY - Indica che l'indicatore può essere sostituito o sovrapposto da un indicatore obbligatorio oppure sostituito da un indicatore OPTIONAL_AND_HIDES_LOWER_PRIORITY con priorità più alta. Utilizza zIndex per determinare la priorità relativa tra gli indicatori OPTIONAL_AND_HIDES_LOWER_PRIORITY. Un valore zIndex più alto indica una priorità più alta.
  • REQUIRED_AND_HIDES_OPTIONAL - Richiede la visualizzazione di un indicatore nascondendo eventuali indicatori, etichette o PDI OPTIONAL_AND_HIDES_LOWER_PRIORITY che si sovrappongono all' indicatore. L'indicatore può sovrapporsi ad altri indicatori obbligatori.

Il seguente esempio di codice mostra l'impostazione di CollisionBehavior per un nuovo 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);