หน้านี้แสดงวิธีควบคุมลักษณะการทำงานเมื่อเกิดการชนกันของมาร์กเกอร์
ตั้งค่าลักษณะการทำงานเมื่อเกิดการชนกันของมาร์กเกอร์
การดำเนินการสำหรับการซ้อนทับจะควบคุมวิธีแสดงมาร์กเกอร์หากมาร์กเกอร์ชนกัน (ซ้อนทับ) กับมาร์กเกอร์อื่น วิธีที่คุณสร้างมาร์กเกอร์ขั้นสูงจะเป็นตัวกำหนดลักษณะการทำงานเมื่อเกิดการชนกัน
มาร์กเกอร์ขั้นสูงที่สร้างโดยใช้
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);