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

Trang này cho bạn biết cách quản lý các 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ư điểm yêu thích (POI) hoặc tên đường.

Trước khi bắt đầu

Để quản lý các xung đột điểm đánh dấu và nhãn, bạn phải sử dụng mã bản đồ.

Nếu đang sử dụng hình ảnh bitmap của bản đồ thông qua chế độ lite, bạn không thể quản lý các xung đột của điểm đánh dấu và nhãn.

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

Sử dụng Marker.Thuộc tính 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 lặp 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 điểm đánh dấu có thể được thay thế hoặc chồng chéo 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 để 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, nhãn hoặc POI OPTIONAL_AND_HIDES_LOWER_PRIORITY trùng lặp với điểm đánh dấu đó. Điểm đánh dấu này 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);