Zachowanie w przypadku kolizji

Wybierz platformę: Android iOS JavaScript

Na tej stronie dowiesz się, jak kontrolować zachowanie znacznika przy kolizji.

Ustawianie zachowania znaczników przy kolizji

Zachowanie przy kolizji znaczników określa, jak znacznik będzie wyświetlany, jeśli będzie się nakładać na inny znacznik. Sposób tworzenia znaczników zaawansowanych określa, jak działa zachowanie przy kolizji:

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

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

Aby ustawić zachowanie przy kolizji znaczników, ustaw w atrybucie AdvancedMarkerOptions.collisionBehavior jedną z tych wartości:

  • CollisionBehavior.REQUIRED (domyślnie) Zawsze wyświetlaj znacznik 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 lub etykiety, które mogłyby się z nim pokrywać.
  • CollisionBehavior.OPTIONAL_AND_HIDES_LOWER_PRIORITY Wyświetlaj znacznik tylko wtedy, gdy nie nakłada się na inne znaczniki.

    • Jeśli 2 znaczniki bitmapy nakładają się na siebie, wyświetlany jest ten z wyższą wartością zIndex. Jeśli mają ten sam atrybut zIndex, wyświetlany jest ten znacznik, który znajduje się niżej na ekranie. Więcej informacji o zIndex znajdziesz w artykule o indeksie Z znacznika.

    • Jeśli 2 znaczniki widoku nakładają się na siebie, wyświetlany jest ten z wyższą wartością zIndex. Jeśli mają tę samą wartość zIndex, ostatnio utworzony znacznik nakłada się na wszystkie znaczniki utworzone wcześniej.

    • Ponieważ znaczniki widoku są rysowane na warstwie nad znacznikami mapy bitowej, znaczniki widoku nakładają się na znaczniki mapy bitowej. Dlatego, aby lepiej kontrolować kolizje, staraj się używać znaczników tego samego typu.

W przykładzie poniżej pokazujemy, jak ustawić zachowanie znacznika przy kolizji:

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