ลักษณะการชนกัน

เลือกแพลตฟอร์ม: Android iOS JavaScript

หน้านี้แสดงวิธีควบคุมลักษณะการทำงานเมื่อเกิดการชนกันของมาร์กเกอร์

ตั้งค่าลักษณะการทำงานเมื่อเกิดการชนกันของมาร์กเกอร์

การดำเนินการสำหรับการซ้อนทับจะควบคุมวิธีแสดงมาร์กเกอร์หากมาร์กเกอร์ชนกัน (ซ้อนทับ) กับมาร์กเกอร์อื่น วิธีที่คุณสร้างมาร์กเกอร์ขั้นสูงจะเป็นตัวกำหนดลักษณะการทำงานเมื่อเกิดการชนกัน

  • มาร์กเกอร์ขั้นสูงที่สร้างโดยใช้ BitmapDescriptorFactory เรียกว่ามาร์กเกอร์ บิตแมป ซึ่งมาร์กเกอร์เหล่านี้จะวาดโดยแผนที่หลัก

  • มาร์กเกอร์ขั้นสูงอื่นๆ ทั้งหมด รวมถึงมาร์กเกอร์ที่สร้างโดยใช้วิธี AdvancedMarkerOptions.iconView() เรียกว่ามาร์กเกอร์ มุมมอง และจะวาดบนเลเยอร์เหนือแผนที่หลัก

หากต้องการตั้งค่าการดำเนินการสำหรับการซ้อนทับ ให้ตั้งค่า AdvancedMarkerOptions.collisionBehavior เป็นค่าใดค่าหนึ่งต่อไปนี้

  • CollisionBehavior.REQUIRED: (ค่าเริ่มต้น) แสดงมาร์กเกอร์เสมอไม่ว่าจะเกิดการชนกันหรือไม่ก็ตาม
  • CollisionBehavior.REQUIRED_AND_HIDES_OPTIONAL แสดงมาร์กเกอร์เสมอไม่ว่าจะเกิดการชนกันหรือไม่ก็ตาม และซ่อนมาร์กเกอร์หรือป้ายกำกับ OPTIONAL_AND_HIDES_LOWER_PRIORITY ที่จะซ้อนทับกับมาร์กเกอร์
  • CollisionBehavior.OPTIONAL_AND_HIDES_LOWER_PRIORITY แสดงมาร์กเกอร์ก็ต่อเมื่อมาร์กเกอร์ไม่ซ้อนทับกับมาร์กเกอร์อื่น

    • หากมาร์กเกอร์ บิตแมป 2 รายการซ้อนทับกัน ระบบจะแสดงมาร์กเกอร์ที่มี zIndex สูงกว่า หากมี zIndex เท่ากัน ระบบจะแสดงมาร์กเกอร์ที่มีตำแหน่งหน้าจอแนวตั้งต่ำกว่า ดูข้อมูลเพิ่มเติมเกี่ยวกับ zIndex ได้ที่ z-index ของมาร์กเกอร์

    • หากมาร์กเกอร์ มุมมอง 2 รายการซ้อนทับกัน ระบบจะแสดงมาร์กเกอร์ที่มี zIndex สูงกว่า หากมี zIndex เท่ากัน มาร์กเกอร์ที่สร้างขึ้นล่าสุดจะซ้อนทับมาร์กเกอร์ที่สร้างขึ้นก่อนหน้านั้น

    • เนื่องจากมาร์กเกอร์ มุมมอง จะวาดบนเลเยอร์เหนือมาร์กเกอร์ บิตแมป มาร์กเกอร์ มุมมอง จึงซ้อนทับมาร์กเกอร์ บิตแมป ดังนั้น คุณควรพยายามใช้มาร์กเกอร์ประเภทเดียวกันเพื่อการควบคุมการชนกันที่ดีขึ้น

ตัวอย่างต่อไปนี้แสดงการตั้งค่าลักษณะการทำงานเมื่อเกิดการชนกันของมาร์กเกอร์

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