Z tej strony dowiesz się, jak zarządzać kolizjami między znacznikami dodawanymi do mapy a etykietami domyślnymi, takimi jak ciekawe miejsca czy nazwy ulic.
Zanim zaczniesz
Aby zarządzać kolizjami znaczników i etykiet, musisz używać identyfikatora mapy.
Jeśli używasz mapy w postaci obrazu bitmapowego w wersji uproszczonej, nie możesz zarządzać kolizjami znaczników i etykiet.Określanie priorytetów znaczników
Użyj właściwości Marker.CollisionBehavior , aby określić priorytet znacznika.
Użyj jednej z tych wartości:
REQUIRED– domyślna. Wymaga wyświetlenia znacznika, który nakłada się na inne znaczniki, etykiety i ciekawe miejsca.OPTIONAL_AND_HIDES_LOWER_PRIORITY– oznacza, że znacznik może zostać zastąpiony lub nakryty przez wymagany znacznik albo zastąpiony przez znacznikOPTIONAL_AND_HIDES_LOWER_PRIORITYo wyższym priorytecie. Użyj właściwościzIndex, aby określić względny priorytet między znacznikamiOPTIONAL_AND_HIDES_LOWER_PRIORITY. Wyższa wartośćzIndexoznacza wyższy priorytet.REQUIRED_AND_HIDES_OPTIONAL– wymaga wyświetlenia znacznika, a jednocześnie ukrywa wszystkieOPTIONAL_AND_HIDES_LOWER_PRIORITYznaczniki, etykiety lub ciekawe miejsca, które nakładają się na znacznik. Znacznik może nakładać się na inne wymagane znaczniki.
W przykładzie kodu poniżej pokazujemy, jak ustawić właściwość CollisionBehavior dla nowego 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);