Quản lý điểm đánh dấu, nhãn và xung đột POI

Trang này hướng dẫn bạn cách quản lý các trường hợp xung đột giữa các điểm đánh dấu mà bạn thêm vào bản đồ và nhãn mặc định, chẳng hạn như địa điểm yêu thích (POI) hoặc tên đường phố.

Trước khi bắt đầu

Để quản lý các điểm đánh dấu và nhãn bị trùng lặp, bạn phải sử dụng mã bản đồ.

Nếu đang sử dụng hình ảnh bitmap của một bản đồ thông qua chế độ thu gọn, bạn không thể quản lý các trường hợp xung đột giữa điểm đánh dấu và nhãn.

Chỉ định mức độ ưu tiên của điểm đánh dấu

Dùng Marker.CollisionBehavior để chỉ định mức độ ưu tiên trên một điểm đánh dấu.

Hãy dùng một trong những giá trị sau:

  • REQUIRED – Mặc định. Yêu cầu hiển thị một điểm đánh dấu trùng với các điểm đánh dấu, nhãn và địa điểm yêu thích khác.
  • OPTIONAL_AND_HIDES_LOWER_PRIORITY – Cho biết rằng điểm đánh dấu có thể được thay thế hoặc chồng lên bởi một điểm đánh dấu bắt buộc, hoặc được thay thế bằng một điểm đánh dấu OPTIONAL_AND_HIDES_LOWER_PRIORITY có mức độ ưu tiên cao hơn. Sử dụng zIndex để giúp xác định mức độ ưu tiên tương đối giữa các điểm đánh dấu OPTIONAL_AND_HIDES_LOWER_PRIORITY. Giá trị zIndex càng cao thì mức độ ưu tiên càng cao.
  • REQUIRED_AND_HIDES_OPTIONAL – Yêu cầu hiển thị một điểm đánh dấu trong khi ẩn mọi điểm đánh dấu OPTIONAL_AND_HIDES_LOWER_PRIORITY, nhãn hoặc điểm yêu thích trùng lặp với điểm đánh dấu. Điểm đánh dấu có thể trùng lặp với các điểm đánh dấu bắt buộc khác.

Ví dụ về mã sau đây cho thấy cách đặt CollisionBehavior cho một điểm đánh dấu mới:

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);