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 markery utworzone za pomocą elementu BitmapDescriptorFactory są nazywane markerami 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 się nakładają, wyświetlany jest ten o wyższej wartości zIndex. Jeśli mają ten sam atrybut zIndex, wyświetlany jest ten, który ma niższą pozycję pionową ekranu. Więcej informacji o parametrze zIndex znajdziesz w sekcji Indeks 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ą 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.

W przykładzie poniżej pokazujemy, jak ustawić zachowanie w przypadku kolizji w przypadku 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);