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

เลือกแพลตฟอร์ม: 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 เดียวกัน เครื่องหมายที่สร้างล่าสุดจะทับซ้อนกับเครื่องหมายที่สร้างก่อนหน้า

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