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

เลือกแพลตฟอร์ม แอนดรอยด์ iOS JavaScript

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

ตั้งค่าลักษณะการชนให้กับเครื่องหมาย

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

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

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

หากต้องการตั้งค่าลักษณะการซ้อนทับ ให้ตั้งค่า 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 เหมือนกัน เครื่องหมายที่สร้างล่าสุด ทับซ้อนกับเครื่องหมายที่สร้างขึ้นก่อนหน้า

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

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

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 = AdvancedMarkerOptions.CollisionBehavior.REQUIRED_AND_HIDES_OPTIONAL
val advancedMarkerOptions: AdvancedMarkerOptions = AdvancedMarkerOptions()
    .position(latLng)
    .collisionBehavior(collisionBehavior)
val marker: Marker = map.addMarker(advancedMarkerOptions)

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(latLng)
            .collisionBehavior(collisionBehavior);
Marker marker = map.addMarker(options);