Comportamiento de colisión

Selecciona la plataforma: Android iOS JavaScript

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 marcadores OPTIONAL_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 de zIndex, se mostrará el que tenga la posición vertical más baja en la pantalla. Si deseas obtener más información sobre zIndex, 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 de zIndex, 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);