Configurare il comportamento di collisione degli indicatori

Seleziona la piattaforma: Android iOS JavaScript

Puoi specificare il comportamento di un indicatore quando entra in collisione con un altro indicatore 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 deve essere visualizzato solo se non si sovrappone ad altri marcatori. Se due indicatori di questo tipo si sovrappongono, viene visualizzato quello con l'ordine di disegno più alto. Se hanno lo stesso ordine di disegno, viene mostrato quello con la posizione verticale dello schermo più bassa.

Il seguente esempio di codice mostra ciascuno dei valori del comportamento di collisione. Per utilizzare questo esempio di codice, segui le istruzioni riportate in Configurazione e Aggiungere una mappa 3D all'app per configurare il progetto Android Studio con una mappa 3D di base. Poi, 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
})