本頁說明如何控管標記的衝突行為。
設定標記的衝突行為
衝突行為可控管標記互相衝突 (重疊) 時的顯示方式。建立進階標記的方式會決定衝突行為的運作方式:
使用
BitmapDescriptorFactory
建立的進階標記稱為「點陣圖」標記,是由核心地圖所繪製。所有其他進階標記 (包括使用
AdvancedMarkerOptions.iconView()
方法建立的標記) 稱為「View」標記,繪製在核心地圖上方的圖層上。
如要設定衝突行為,請將 AdvancedMarkerOptions.collisionBehavior
設為下列其中一種狀態:
CollisionBehavior.REQUIRED
:(預設) 無論是哪種衝突,一律顯示標記。CollisionBehavior.REQUIRED_AND_HIDES_OPTIONAL
:無論是哪種衝突,一律顯示標記,並隱藏與標記重疊的任何OPTIONAL_AND_HIDES_LOWER_PRIORITY
標記或標籤。CollisionBehavior.OPTIONAL_AND_HIDES_LOWER_PRIORITY
:標記只會在沒有重疊情況時顯示。如果兩個「點陣圖」標記重疊,系統會顯示
zIndex
較高的標記。如果兩者的zIndex
相同,系統會顯示直向畫面位置較低的標記。如要進一步瞭解zIndex
,請參閱「標記 z-index」一文。如果兩個「View」標記重疊,系統會顯示
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);