Na tej stronie dowiesz się, jak sterować zachowaniem przy kolizji znaczników.
Ustawianie zachowania przy kolizji znaczników
Zachowanie przy kolizji znaczników określa, jak znacznik będzie wyświetlany, jeśli będzie się nakładać na inny znacznik. Sposób tworzenia zaawansowanych znaczników określa, jak działa zachowanie przy kolizji:
Zaawansowane znaczniki utworzone za pomocą
BitmapDescriptorFactorysą nazywane znacznikami bitmapowymi. Te znaczniki są rysowane przez podstawową mapę.Wszystkie inne zaawansowane znaczniki, w tym te utworzone za pomocą metody
AdvancedMarkerOptions.iconView(), są nazywane znacznikami widoku i są rysowane na warstwie nad podstawową mapą.
Aby ustawić zachowanie przy kolizji znaczników, ustaw
AdvancedMarkerOptions.collisionBehavior
jedną z tych wartości:
CollisionBehavior.REQUIRED(domyślnie) Zawsze wyświetlaj znacznik niezależnie od kolizji.CollisionBehavior.REQUIRED_AND_HIDES_OPTIONALZawsze wyświetlaj znacznik niezależnie od kolizji i ukrywaj wszystkie znaczniki lub etykietyOPTIONAL_AND_HIDES_LOWER_PRIORITY, które mogłyby się z nim pokrywać.CollisionBehavior.OPTIONAL_AND_HIDES_LOWER_PRIORITYWyświetlaj znacznik tylko wtedy, gdy nie nakłada się na inne znaczniki.Jeśli 2 znaczniki bitmapowe nakładają się na siebie, wyświetlany jest ten z wyższą wartością
zIndex. Jeśli mają ten sam atrybutzIndex, wyświetlany jest ten znacznik, który znajduje się niżej na ekranie. Więcej informacji o atrybuciezIndexznajdziesz w artykule Kolejność nakładania znaczników.Jeśli 2 znaczniki widoku nakładają się na siebie, wyświetlany jest ten z wyższą wartością
zIndex. Jeśli mają ten sam atrybutzIndex, ostatnio utworzony znacznik nakłada się na wszystkie znaczniki utworzone wcześniej.Ponieważ znaczniki widoku są rysowane na warstwie nad znacznikami bitmapowymi, nakładają się na znaczniki bitmapowe. Dlatego, aby lepiej kontrolować kolizje, używaj znaczników tego samego typu.
Poniższy przykład pokazuje, jak ustawić zachowanie przy kolizji znaczników:
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);