หน้านี้แสดงวิธีควบคุมลักษณะการชนกันของหมุด
ตั้งค่าลักษณะการชนกันของเครื่องหมาย
ลักษณะการชนจะควบคุมลักษณะที่เครื่องหมายแสดงเมื่อเครื่องหมายชน (ซ้อนทับ) กับเครื่องหมายอื่น วิธีสร้างเครื่องหมายขั้นสูงจะกำหนดลักษณะการทํางานของลักษณะการชน
เครื่องหมายขั้นสูงที่สร้างโดยการใช้
BitmapDescriptorFactory
จะเรียกว่าเครื่องหมายบิตแมป เครื่องหมายเหล่านี้วาดโดยแผนที่หลักเครื่องหมายขั้นสูงอื่นๆ ทั้งหมด รวมถึงเครื่องหมายที่สร้างโดยใช้เมธอด
AdvancedMarkerOptions.iconView()
จะเรียกว่าเครื่องหมายมุมมองและจะวาดในเลเยอร์เหนือแผนที่หลัก
หากต้องการตั้งค่าลักษณะการซ้อนทับ ให้ตั้งค่า AdvancedMarkerOptions.collisionBehavior
เป็นแบบใดแบบหนึ่งต่อไปนี้
CollisionBehavior.REQUIRED
: (ค่าเริ่มต้น) แสดงเครื่องหมายเสมอไม่ว่าจะมีการชนหรือไม่ก็ตามCollisionBehavior.REQUIRED_AND_HIDES_OPTIONAL
แสดงเครื่องหมายเสมอไม่ว่าจะมีการทับซ้อนกันหรือไม่ และซ่อนเครื่องหมายหรือป้ายกำกับOPTIONAL_AND_HIDES_LOWER_PRIORITY
ที่จะทับซ้อนกับเครื่องหมายCollisionBehavior.OPTIONAL_AND_HIDES_LOWER_PRIORITY
แสดงเครื่องหมายก็ต่อเมื่อไม่ทับซ้อนกับเครื่องหมายอื่นๆหากเครื่องหมาย bitmap 2 รายการซ้อนทับกัน ระบบจะแสดงเครื่องหมายที่มี
zIndex
สูงกว่า หากอุปกรณ์มีzIndex
เหมือนกัน หน้าจอที่มีตำแหน่งหน้าจอแนวตั้งอยู่ด้านล่างจะปรากฏขึ้น ดูข้อมูลเพิ่มเติมเกี่ยวกับzIndex
ได้ที่เครื่องหมาย z-indexหากเครื่องหมายมุมมอง 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);