Cette page explique comment contrôler le comportement d'un repère en cas de collision.
Définir le comportement d'un repère en cas de collision
Le comportement en cas de collision définit comment un repère s'affiche s'il entre en collision avec un autre repère (c'est-à-dire s'ils se chevauchent). La façon dont vous créez un repère avancé détermine comment il s'affiche en cas de collision :
Les repères avancés créés à l'aide de
BitmapDescriptorFactory
sont appelés "repères bitmap". Ils sont dessinés par la carte principale.Tous les autres repères avancés, y compris ceux créés à l'aide de la méthode
AdvancedMarkerOptions.iconView()
, sont appelés "repères de vue" et sont dessinés sur un calque au-dessus de la carte principale.
Pour configurer le comportement en cas de collision, définissez AdvancedMarkerOptions.collisionBehavior
sur l'une des valeurs suivantes :
CollisionBehavior.REQUIRED
(par défaut) : Toujours afficher le repère, quelle que soit la collision.CollisionBehavior.REQUIRED_AND_HIDES_OPTIONAL
: Toujours afficher le repère, quelle que soit la collision, et masquer les repères ou libellésOPTIONAL_AND_HIDES_LOWER_PRIORITY
qui le chevauchent.CollisionBehavior.OPTIONAL_AND_HIDES_LOWER_PRIORITY
: Afficher le repère uniquement s'il n'en chevauche pas d'autres.Si deux repères bitmap se chevauchent, celui dont le
zIndex
est le plus élevé s'affiche. S'ils ont le mêmezIndex
, celui dont la position verticale à l'écran est la plus basse s'affiche. Pour en savoir plus sur lezIndex
, consultez Z-index du repère.Si deux repères de vue se chevauchent, celui dont le
zIndex
est le plus élevé s'affiche. S'ils ont le mêmezIndex
, le repère créé en dernier chevauche tous ceux créés avant lui.Comme les repères de vue sont dessinés sur un calque au-dessus des repères bitmap, les repères de vue chevauchent les repères bitmap. Pour optimiser le contrôle des collisions, vous devez donc essayer d'utiliser des repères du même type.
L'exemple suivant montre comment définir le comportement d'un repère en cas de collision :
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 = AdvancedMarkerOptions.CollisionBehavior.REQUIRED_AND_HIDES_OPTIONAL val advancedMarkerOptions: AdvancedMarkerOptions = AdvancedMarkerOptions() .position(latLng) .collisionBehavior(collisionBehavior)
val marker: Marker = map.addMarker(advancedMarkerOptions)
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(latLng) .collisionBehavior(collisionBehavior);
Marker marker = map.addMarker(options);