En esta página, te indicamos cómo controlar el comportamiento de colisión de un marcador.
Cómo configurar el comportamiento de colisión de un marcador
El comportamiento de colisión controla cómo se muestra un marcador si se superpone con otro. El modo en que creas tus marcadores avanzados determina el comportamiento de colisión.
Los marcadores avanzados que se crean con
BitmapDescriptorFactory
se conocen como marcadores de mapa de bits. Estos marcadores se establecen en el mapa central.Todos los demás marcadores avanzados, incluidos aquellos creados con el método
AdvancedMarkerOptions.iconView()
, se denominan marcadores de vista y se establecen en una capa superior a la del mapa principal.
Para configurar el comportamiento de colisión, establece AdvancedMarkerOptions.collisionBehavior
en una de las siguientes opciones:
CollisionBehavior.REQUIRED
: (opción predeterminada) Indica que el marcador debe mostrarse siempre, independientemente de las superposiciones.CollisionBehavior.REQUIRED_AND_HIDES_OPTIONAL
: Indica que el marcador debe mostrarse siempre, independientemente de las superposiciones, y que se deben ocultar las etiquetas o los marcadoresOPTIONAL_AND_HIDES_LOWER_PRIORITY
que se superpongan con este.CollisionBehavior.OPTIONAL_AND_HIDES_LOWER_PRIORITY
: Indica que el marcador solo debe mostrarse si no se superpone con otros.Si dos marcadores de mapa de bits se superponen entre sí, se mostrará el que tenga el valor de
zIndex
más alto. Si tienen el mismo valor dezIndex
, se mostrará el que tenga la posición vertical más baja en la pantalla. Si deseas obtener más información sobrezIndex
, consulta Marcador z-index.Si dos marcadores de vista se superponen, se mostrará el que tenga el valor de
zIndex
más alto. Si tienen el mismo valor dezIndex
, el marcador creado más recientemente se superpondrá a los que se hayan creado antes.Dado que los marcadores de vista se establecen en una capa superior a la de los marcadores de mapa de bits, los marcadores de vista se superponen a los marcadores de mapa de bits. Por lo tanto, te recomendamos que uses marcadores del mismo tipo para tener un mejor control del comportamiento de colisión.
En el siguiente ejemplo, se muestra la configuración del comportamiento de colisión de un marcador:
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);