本页面介绍了如何控制标记的冲突行为。
设置标记的冲突行为
冲突行为用于控制标记与其他标记冲突(重叠)时的显示方式。创建高级标记的方式决定了冲突行为的运作方式:
使用
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);