Configurare il comportamento di collisione degli indicatori

Seleziona la piattaforma: Android iOS JavaScript

È possibile specificare il comportamento di un marcatore quando entra in collisione con un altro marcatore o un'etichetta della mappa impostando la proprietà collisionBehavior su uno dei seguenti valori:

  • REQUIRED: il marcatore deve essere sempre visualizzato, indipendentemente dalle collisioni.
  • REQUIRED_AND_HIDES_OPTIONAL: il marcatore deve essere sempre visualizzato indipendentemente dalle collisioni. I marcatori con comportamento di OPTIONAL_AND_HIDES_LOWER_PRIORITYcollisione o le etichette della mappa predefinite che si sovrappongono a questo marcatore verranno nascoste.
  • OPTIONAL_AND_HIDES_LOWER_PRIORITY: Il marcatore dovrebbe essere visualizzato solo se non si sovrappone ad altri marcatori. Se due marcatori di questo tipo si sovrappongono, viene mostrato quello con l'ordine di disegno più alto. Se hanno lo stesso ordine di disegno, viene mostrato quello con la posizione verticale più bassa sullo schermo.

Il seguente esempio di codice mostra ciascuno dei valori del comportamento di collisione. Per utilizzare questo esempio di codice, segui le istruzioni in Configurazione e Aggiungi una mappa 3D alla tua app per configurare il tuo progetto Android Studio con una mappa 3D di base. Quindi, aggiungi il seguente codice al file MainActivity.kt:

// Add imports
import com.google.android.gms.maps3d.model.latLngAltitude

...

// Marker 1: REQUIRED
googleMap3D.addMarker(markerOptions {
    position = latLngAltitude {
        latitude = 52.52027645136134
        longitude = 13.408271658592406
        altitude = 0.0
    }
    label = "Collision Behavior: REQUIRED"
    altitudeMode = AltitudeMode.CLAMP_TO_GROUND
    isExtruded = true
    isDrawnWhenOccluded = true
    collisionBehavior = CollisionBehavior.REQUIRED
})

// Marker 2: REQUIRED_AND_HIDES_OPTIONAL
googleMap3D.addMarker(markerOptions {
    position = latLngAltitude {
        latitude = 52.519605780912585
        longitude = 13.406867190588198
        altitude = 150.0
    }
    label = "Colliding Behavior: REQUIRED_AND_HIDES_OPTIONAL"
    altitudeMode = AltitudeMode.ABSOLUTE
    isExtruded = true
    isDrawnWhenOccluded = true
    collisionBehavior = CollisionBehavior.REQUIRED_AND_HIDES_OPTIONAL
})

// Marker 3: OPTIONAL_AND_HIDES_LOWER_PRIORITY
googleMap3D.addMarker(markerOptions {
    position = latLngAltitude {
        latitude = 52.519882191069016
        longitude = 13.407410777254293
        altitude = 50.0
    }
    label = "Colliding Behavior: OPTIONAL_AND_HIDES_LOWER_PRIORITY"
    altitudeMode = AltitudeMode.RELATIVE_TO_GROUND
    isExtruded = true
    isDrawnWhenOccluded = true
    collisionBehavior = CollisionBehavior.OPTIONAL_AND_HIDES_LOWER_PRIORITY
})