衝突行為

選取平台: Android iOS JavaScript

本頁說明如何控管標記的衝突行為。

設定標記的衝突行為

衝突行為可控管標記互相衝突 (重疊) 時的顯示方式。建立進階標記的方式會決定衝突行為的運作方式:

  • 使用 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);