Comportamento em caso de conflito

Selecione a plataforma: Android iOS JavaScript

Esta página mostra como controlar o comportamento em caso de conflito de um marcador.

Definir o comportamento em caso de conflito de um marcador

O comportamento em caso de conflito controla como um marcador é mostrado em caso de conflito (sobreposição) com outro marcador. A maneira como você cria Marcadores Avançados determina o comportamento em caso de conflito:

  • Os Marcadores Avançados criados usando BitmapDescriptorFactory são conhecidos como marcadores de bitmap. Eles são desenhados pelo mapa básico.

  • Todos os outros Marcadores Avançados, incluindo aqueles criados pelo método AdvancedMarkerOptions.iconView(), são conhecidos como marcadores de visualização e são desenhados em uma camada acima do mapa básico.

Para escolher o comportamento em caso de conflito, defina AdvancedMarkerOptions.collisionBehavior como uma das seguintes opções:

  • CollisionBehavior.REQUIRED (padrão): sempre mostrar o marcador, independentemente do conflito.
  • CollisionBehavior.REQUIRED_AND_HIDES_OPTIONAL: sempre mostrar o marcador, independentemente do conflito, e ocultar todos os marcadores OPTIONAL_AND_HIDES_LOWER_PRIORITY ou rótulos que se sobrepuserem a ele.
  • CollisionBehavior.OPTIONAL_AND_HIDES_LOWER_PRIORITY: só mostrar o marcador se ele não se sobrepuser a outros elementos.

    • Se dois marcadores bitmap ficarem sobrepostos, aquele com zIndex maior vai aparecer. Se eles tiverem o mesmo zIndex, aquele com a posição vertical mais abaixo na tela será mostrado. Para mais informações sobre zIndex, consulte Z-index do marcador.

    • Se dois marcadores de visualização se sobrepuserem, aquele com zIndex maior vai aparecer. Caso tenham o mesmo zIndex, o último marcador criado sobrepõe todos os que foram criados antes.

    • Como os marcadores de visualização são desenhados em uma camada acima dos de bitmap, os de visualização sobrepõem os de bitmap. Portanto, você deve tentar usar marcadores do mesmo tipo para melhorar o controle em caso de conflito.

Confira no exemplo a seguir como configurar o comportamento em caso de conflito de um 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);