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 wszystkieOPTIONAL_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 atrybutuzIndex
, 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 znacznikzIndex
, 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 = 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);