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

เลือกแพลตฟอร์ม แอนดรอยด์ 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);