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_OPTIONAL
Zawsze wyświetlaj znacznik niezależnie od kolizji i ukrywajOPTIONAL_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 atrybutuzIndex
, 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 parametrzIndex
, 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);