Zachowanie w przypadku kolizji

Wybierz platformę: Android iOS JavaScript

Na tej stronie dowiesz się, jak kontrolować zachowanie markera podczas kolizji.

Ustawianie zachowania markera w przypadku kolizji

Zachowanie w przypadku kolizji określa sposób wyświetlania znacznika, gdy koliduje (nachodzi) na inny znacznik. Sposób tworzenia zaawansowanych znaczników określa sposób działania zachowania w przypadku kolizji:

  • Zaawansowane znaczniki utworzone za pomocą funkcji BitmapDescriptorFactory nazywane są znacznikami mapy bitowej. Te znaczniki są rysowane przez mapę główną.

  • Wszystkie inne zaawansowane znaczniki, w tym te utworzone za pomocą metody AdvancedMarkerOptions.iconView(), są nazywane znacznikami widoku i są nanoszone na warstwie nad mapą główną.

Aby określić zachowanie w przypadku kolizji, ustaw parametr AdvancedMarkerOptions.collisionBehavior na jedną z tych wartości:

  • CollisionBehavior.REQUIRED: (domyślnie) zawsze wyświetlaj znacznik bez względu na kolizje.
  • CollisionBehavior.REQUIRED_AND_HIDES_OPTIONAL Zawsze wyświetlaj znacznik niezależnie od kolizji i ukrywanie OPTIONAL_AND_HIDES_LOWER_PRIORITYznaczników lub etykiet, które nakładają się na znacznik.
  • CollisionBehavior.OPTIONAL_AND_HIDES_LOWER_PRIORITY Wyświetl znacznik tylko wtedy, gdy nie nakłada się on na inne znaczniki.

    • Jeśli 2 oznaczniki mapy bitowej nakładają się na siebie, wyświetlany jest ten z wyższym zIndex. Jeśli mają ten sam zIndex, wyświetlana jest pozycja na ekranie, która jest niżej. Więcej informacji o zIndex znajdziesz w artykule Marker z indeksem z-poziomu.

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

    • Ponieważ znaczniki widoku są rysowane na warstwie nad znacznikami mapy bitowej, widok zakrywa znaczniki mapy bitowej. Dlatego, aby lepiej kontrolować kolizje, spróbuj używać znaczników tego samego typu.

Poniższy przykład pokazuje ustawienie zachowania w przypadku kolizji 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 = CollisionBehavior.REQUIRED_AND_HIDES_OPTIONAL
val advancedMarkerOptions: AdvancedMarkerOptions = AdvancedMarkerOptions()
    .position(LatLng(10.0, 10.0))
    .collisionBehavior(collisionBehavior)

val marker: Marker = map.addMarker(advancedMarkerOptions) ?: error("Failed to add marker")

      

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(new LatLng(10.0, 10.0))
        .collisionBehavior(collisionBehavior);

Marker marker = map.addMarker(options);