การจัดการเครื่องหมาย ป้ายกำกับ และการชนจุดที่น่าสนใจ

หน้านี้จะแสดงวิธีจัดการการทับซ้อนกันระหว่างเครื่องหมายที่คุณเพิ่ม ลงในแผนที่กับป้ายกำกับเริ่มต้น เช่น จุดที่น่าสนใจ (POI) หรือชื่อถนน

ก่อนเริ่มต้น

หากต้องการจัดการการทับซ้อนของเครื่องหมายและป้ายกำกับ คุณต้องใช้รหัสแผนที่

หากใช้รูปภาพบิตแมปของแผนที่ผ่านโหมด Lite คุณจะ จัดการการทับซ้อนของเครื่องหมายและป้ายกำกับไม่ได้

การระบุลำดับความสำคัญของเครื่องหมาย

ใช้MarkerCollisionBehavior เพื่อระบุลำดับความสำคัญในเครื่องหมาย

โปรดใช้ค่าใดค่าหนึ่งต่อไปนี้

  • REQUIRED - ค่าเริ่มต้น ต้องแสดงเครื่องหมายที่ทับซ้อนกับเครื่องหมาย ป้ายกำกับ และจุดที่น่าสนใจอื่นๆ
  • OPTIONAL_AND_HIDES_LOWER_PRIORITY - ระบุว่าเครื่องหมายอาจถูกแทนที่หรือ ซ้อนทับด้วยเครื่องหมายที่จำเป็น หรือถูกแทนที่ด้วยเครื่องหมาย OPTIONAL_AND_HIDES_LOWER_PRIORITY ที่มีลำดับความสำคัญสูงกว่า ใช้ zIndex เพื่อช่วยกำหนดลำดับความสำคัญที่เกี่ยวข้อง ระหว่างเครื่องหมาย OPTIONAL_AND_HIDES_LOWER_PRIORITY ค่า zIndex ที่สูงขึ้นบ่งบอกถึงลำดับความสำคัญที่สูงขึ้น
  • REQUIRED_AND_HIDES_OPTIONAL - ต้องแสดงเครื่องหมายขณะซ่อนเครื่องหมาย OPTIONAL_AND_HIDES_LOWER_PRIORITY ป้ายกำกับ หรือ POI ที่ทับซ้อนกับเครื่องหมาย เครื่องหมายอาจทับซ้อนกับเครื่องหมายอื่นๆ ที่จำเป็น

ตัวอย่างโค้ดต่อไปนี้แสดงการตั้งค่า CollisionBehavior สำหรับเครื่องหมายใหม่

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