Zachowanie w przypadku kolizji

Wybierz platformę: Android iOS JavaScript

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

Ustawianie zachowania znacznika w przypadku kolizji

Zachowanie w przypadku kolizji określa sposób wyświetlania znacznika, jeśli koliduje (nakłada się) z innym znacznikiem. Sposób tworzenia zaawansowanych znaczników określa sposób działania kolizji:

  • Zaawansowane znaczniki utworzone za pomocą tagu BitmapDescriptorFactory są nazywane znacznikami mapy bitowej. Te znaczniki są rysowane przez podstawową mapę.

  • 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 w przypadku kolizji, ustaw wartość parametru AdvancedMarkerOptions.collisionBehavior na jedną z tych opcji:

  • 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 OPTIONAL_AND_HIDES_LOWER_PRIORITY znaczniki 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 markery bitmapowe nakładają się na siebie, wyświetlany jest ten o wyższej wartości zIndex. Jeśli mają ten sam atrybut zIndex, wyświetlany jest ten z niższym położeniem na ekranie w pionie. Więcej informacji o parametrze zIndex znajdziesz w sekcji Indeks Z znacznika.

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

    • Markery widoku są rysowane na warstwie powyżej markerów mapy bitowej, więc markery widoku nakładają się na markery mapy bitowej. Dlatego, aby lepiej kontrolować kolizje, używaj markerów tego samego typu.

Przykład ustawiania zachowania w przypadku kolizji w przypadku markera:

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