Zachowanie w przypadku kolizji

Wybierz platformę: Android iOS JavaScript

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

Ustawianie zachowania w przypadku kolizji znacznika

Zachowanie w przypadku kolizji określa sposób wyświetlania znacznika, gdy koliduje (nakłada się) 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ą rysowane 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: (wartość domyślna) zawsze wyświetlaj znacznik niezależnie od kolizji.
  • CollisionBehavior.REQUIRED_AND_HIDES_OPTIONALZawsze wyświetlaj znacznik niezależnie od kolizji i ukrywaj OPTIONAL_AND_HIDES_LOWER_PRIORITY oraz etykiety, 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 parametr zIndex, wyświetlana jest pozycja z niższym pionowym położeniem ekranu. Więcej informacji o wartościach indeksu z poziomu znajdziesz w sekcji zIndex.

    • Jeśli 2 znaczniki widoku nakładają się na siebie, wyświetlany jest ten z wyższym zIndex. Jeśli mają ten sam parametr 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.

Przykład ustawienia 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);