Zachowanie w przypadku kolizji

Wybierz platformę: Android iOS JavaScript

Ta strona pokazuje, jak kontrolować zachowanie znacznika w przypadku kolizji.

Ustaw zachowanie znacznika w przypadku kolizji

Zachowanie podczas kolizji określa sposób wyświetlania znacznika w przypadku zderzenia (nakładającego się) z innym znacznikiem. Sposób tworzenia zaawansowanych znaczników określa sposób działania w przypadku kolizji:

  • Zaawansowane znaczniki utworzone za pomocą funkcji BitmapDescriptorFactory są nazywane znacznikami bitmapy. Te znaczniki są rysowane przez mapę podstawową.

  • Wszystkie inne znaczniki zaawansowane, w tym te utworzone za pomocą metody AdvancedMarkerOptions.iconView(), są nazywane znacznikami widoku i są rysowane na warstwie powyżej mapy podstawowej.

Aby ustawić zachowanie przy kolizji, ustaw AdvancedMarkerOptions.collisionBehavior na jedną z tych wartości:

  • CollisionBehavior.REQUIRED: (domyślnie) znacznik jest zawsze wyświetlany niezależnie od kolizji.
  • CollisionBehavior.REQUIRED_AND_HIDES_OPTIONAL Zawsze wyświetlaj znacznik niezależnie od kolizji i ukrywaj wszystkie znaczniki OPTIONAL_AND_HIDES_LOWER_PRIORITY oraz etykiety, które mogą się z nim pokrywać.
  • CollisionBehavior.OPTIONAL_AND_HIDES_LOWER_PRIORITY Wyświetlaj znacznik tylko wtedy, gdy nie pokrywa się z innymi znacznikami.

    • Jeśli dwa znaczniki bitmapy nakładają się, wyświetlany jest ten z wyższym zIndex. Jeśli zIndex mają tę samą wartość, wyświetli się ten, który znajduje się niżej w pionie. Więcej informacji na temat zIndex znajdziesz w sekcji Marker z-index.

    • Jeśli dwa znaczniki widoku nakładają się na siebie, wyświetlany jest ten z wyższym zIndex. Jeśli mają ten sam element zIndex, ostatni utworzony znacznik nakłada się na wszystkie znaczniki utworzone wcześniej.

    • Znaczniki widoku są rysowane na warstwie powyżej znaczników bitmap, dlatego znaczniki view nachodzą na znaczniki bitmap. Dlatego też staraj się używać znaczników tego samego typu, aby lepiej kontrolować kolizje.

Poniższy przykład pokazuje ustawianie sposobu kolizji dla znacznika:

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);