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 znacznikiOPTIONAL_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 samzIndex
, wyświetlane będzie to, w którym znajduje się dolna pionowa pozycja na ekranie. Więcej informacji na temat parametruzIndex
znajdziesz w sekcji Marker z-index.Jeśli dwa znaczniki widoku nakładają się, wyświetlany jest ten z wyższym
zIndex
. Jeśli elementzIndex
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);