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

เลือกแพลตฟอร์ม: 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 ของเครื่องหมาย

    • หากเครื่องหมายดู 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);