Zachowanie w przypadku kolizji

Wybierz platformę: Android iOS JavaScript

Na tej stronie przedstawiono sposób kontrolowania zachowania znacznika w przypadku kolizji.

Ustawianie zachowania znacznika podczas kolizji

Zachowanie w przypadku kolizji określa sposób wyświetlania znacznika, gdy zchodzi on z innym znacznikiem. Sposób tworzenia znaczników zaawansowanych wpływa na zachowanie zderzeń:

  • Znaczniki zaawansowane utworzone za pomocą BitmapDescriptorFactory są nazywane znacznikami bitmapy. Te znaczniki są rysowane na mapie podstawowej.

  • Wszystkie inne znaczniki zaawansowane, w tym te utworzone przy użyciu metody AdvancedMarkerOptions.iconView(), są nazywane znacznikami widoku i są rysowane na warstwie nad mapą główną.

Aby ustawić działanie związane z kolizją, ustaw parametr AdvancedMarkerOptions.collisionBehavior na jedną z tych wartości:

  • CollisionBehavior.REQUIRED: (wartość domyślna) zawsze wyświetla znacznik niezależnie od zderzenia.
  • CollisionBehavior.REQUIRED_AND_HIDES_OPTIONAL Zawsze wyświetlaj znacznik bez względu na kolizję i ukryj wszystkie znaczniki OPTIONAL_AND_HIDES_LOWER_PRIORITY i etykiety, które mogą się z nim nakładać.
  • 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 o wyższym wskaźniku zIndex. Jeśli mają one taki sam zIndex, wyświetlane będzie to, w którym znajduje się dolna pionowa pozycja na ekranie. Więcej informacji na temat parametru zIndex znajdziesz w sekcji Marker z-index.

    • Jeśli dwa znaczniki widoku nakładają się, wyświetlany jest ten z wyższym zIndex. Jeśli element zIndex zawiera taki sam element, ostatnio utworzony znacznik nakłada się na wszystkie utworzone wcześniej.

    • Znaczniki view są rysowane na warstwie nad znacznikami bitmapy, dlatego te nakładają się na znaczniki bitmapy. Aby uzyskać lepszą kontrolę nad kolizją, warto używać znaczników tego samego typu.

Poniższy przykład przedstawia zachowanie znacznika przy kolizji ustawień:

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 = AdvancedMarkerOptions.CollisionBehavior.REQUIRED_AND_HIDES_OPTIONAL
val advancedMarkerOptions: AdvancedMarkerOptions = AdvancedMarkerOptions()
    .position(latLng)
    .collisionBehavior(collisionBehavior)
val marker: Marker = map.addMarker(advancedMarkerOptions)

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(latLng)
            .collisionBehavior(collisionBehavior);
Marker marker = map.addMarker(options);