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