冲突行为

请选择平台: Android iOS JavaScript

本页面介绍了如何控制标记的冲突行为。

设置标记的冲突行为

冲突行为用于控制标记与其他标记冲突(重叠)时的显示方式。创建高级标记的方式决定了冲突行为的运作方式:

  • 使用 BitmapDescriptorFactory 创建的高级标记称为位图标记。这些标记由核心地图绘制。

  • 所有其他高级标记(包括使用 AdvancedMarkerOptions.iconView() 方法创建的标记)都被称为视图标记,绘制在核心地图上方的图层上。

如需设置冲突行为,请将 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

    • 如果两个视图标记发生重叠,则会显示 zIndex 较高的那个标记。如果二者的 zIndex 也相同,则最新创建的标记会与在其之前创建的所有标记重叠。

    • 由于视图标记绘制在位图标记上方的图层上,因此视图标记会与位图标记重叠。因此,您应尝试使用同一类型的标记,以便更好地控制冲突。

以下示例显示了如何为标记设置冲突行为:

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);