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