Zarządzanie znacznikami, etykietami i konfliktami z miejscami

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 znacznik OPTIONAL_AND_HIDES_LOWER_PRIORITY o wyższym priorytecie. Użyj właściwości zIndex, aby określić względny priorytet między znacznikami OPTIONAL_AND_HIDES_LOWER_PRIORITY. Wyższa wartość zIndex oznacza wyższy priorytet.
  • REQUIRED_AND_HIDES_OPTIONAL – wymaga wyświetlenia znacznika, a jednocześnie ukrywa wszystkie OPTIONAL_AND_HIDES_LOWER_PRIORITY znaczniki, 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);