Zachowanie w przypadku kolizji

Wybierz platformę: Android iOS JavaScript

Ta strona pokazuje, jak kontrolować zachowanie znacznika w przypadku kolizji.

Ustaw zachowanie znacznika w przypadku kolizji

Zachowanie podczas kolizji określa sposób wyświetlania znacznika w przypadku zderzeń (nakładających się). innym znacznikiem. Sposób tworzenia zaawansowanych znaczników określa sposób działania w przypadku kolizji:

  • Zaawansowane znaczniki utworzone za pomocą funkcji BitmapDescriptorFactory są nazywane znacznikami bitmap. Te znaczniki są rysowane przez mapy podstawowej.

  • Wszystkie inne znaczniki zaawansowane, w tym te utworzone przez użytkownika za pomocą metody AdvancedMarkerOptions.iconView() są określane jako widoku i są rysowane na warstwie ponad mapą główną.

Aby ustawić zachowanie przy kolizji, ustaw AdvancedMarkerOptions.collisionBehavior na jedną z tych opcji:

  • CollisionBehavior.REQUIRED: (domyślnie) zawsze wyświetlaj znacznik, niezależnie od tego zderzeń.
  • CollisionBehavior.REQUIRED_AND_HIDES_OPTIONAL Zawsze wyświetlaj znacznik bez względu na kolizję i ukryj wszystkie OPTIONAL_AND_HIDES_LOWER_PRIORITY, znaczników lub etykiet, które mogłyby ze sobą zachodzić.
  • CollisionBehavior.OPTIONAL_AND_HIDES_LOWER_PRIORITY Wyświetl znacznik tylko jeśli nie nakładają się na inne znaczniki.

    • Jeśli dwa znaczniki bitmapy nakładają się, ten z wyższym zIndex to wyświetlane. Jeśli mają te same elementy (zIndex), to z dolnym pionowym ekranem w dowolnym miejscu. Aby uzyskać więcej informacji na temat atrybutu zIndex, zapoznaj się z sekcją Marker z-index.

    • Jeśli dwa znaczniki widoku nakładają się, ten z wyższym zIndex to wyświetlane. jeśli mają ten sam znacznik zIndex, ostatnio utworzony znacznik. nakłada się na wszystkie znaczniki utworzone wcześniej.

    • Znaczniki widoku są rysowane na warstwie powyżej znaczników bitmap, znaczniki widoku nakładają się na znaczniki bitmap. Dlatego warto spróbować używanie znaczników tego samego typu w celu lepszej kontroli nad kolizjami.

Poniższy przykład pokazuje ustawianie sposobu kolizji dla 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 = 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);