Zachowanie w przypadku kolizji

Wybierz platformę: Android iOS JavaScript

Na tej stronie dowiesz się, jak kontrolować zachowanie markera podczas kolizji.

Ustaw zachowanie znacznika w przypadku kolizji

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

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

  • Wszystkie inne zaawansowane znaczniki, w tym te utworzone za pomocą metody AdvancedMarkerOptions.iconView(), są nazywane znacznikami widoku i są rysowane na warstwie nad 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_OPTIONALZawsze wyświetlaj znacznik niezależnie od kolizji i ukrywaj OPTIONAL_AND_HIDES_LOWER_PRIORITY oraz etykiety, które nakładają się na znacznik.
  • CollisionBehavior.OPTIONAL_AND_HIDES_LOWER_PRIORITY Wyświetl znacznik tylko wtedy, gdy nie nakłada się on 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 pozycja reklamy. Aby uzyskać więcej informacji na temat atrybutu zIndex, zapoznaj się z sekcją Marker z-index.

    • Jeśli 2 znaczniki widoku nakładają się na siebie, wyświetlany jest ten o wyższym zIndex. Jeśli mają ten sam parametr zIndex, ostatnio utworzony znacznik zachodzi na wszystkie wcześniej utworzone znaczniki.

    • Ponieważ znaczniki widoku są rysowane na warstwie nad znacznikami mapy bitowej, znaczniki widoku zachodzą na znaczniki mapy bitowej. Dlatego warto spróbować używanie znaczników tego samego typu w celu lepszej kontroli nad kolizjami.

Przykład ustawienia zachowania w przypadku kolizji 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);