您可以将 collisionBehavior 属性设置为以下值之一,以指定某个标记与其他标记或地图标签冲突时的行为方式:
REQUIRED:无论是否发生冲突,都应始终显示标记。REQUIRED_AND_HIDES_OPTIONAL:无论是否发生碰撞,都应始终显示标记。具有OPTIONAL_AND_HIDES_LOWER_PRIORITY碰撞行为的标记或与此标记重叠的默认地图标签将被隐藏。OPTIONAL_AND_HIDES_LOWER_PRIORITY:仅当标记不与其他标记重叠时才应显示。如果两个同属于这种类型的标记发生重叠,则会显示绘制顺序较高的那个标记。如果二者的绘制顺序相同,则会显示在屏幕上纵向位置较低的那个标记。
以下代码示例演示了每种碰撞行为值。如需使用此代码示例,请按照设置和向应用添加 3D 地图中的说明,使用基本 3D 地图设置 Android Studio 项目。然后,将以下代码添加到 MainActivity.kt 文件中:
// Add imports
import com.google.android.gms.maps3d.model.latLngAltitude
...
// Marker 1: REQUIRED
googleMap3D.addMarker(markerOptions {
position = latLngAltitude {
latitude = 52.52027645136134
longitude = 13.408271658592406
altitude = 0.0
}
label = "Collision Behavior: REQUIRED"
altitudeMode = AltitudeMode.CLAMP_TO_GROUND
isExtruded = true
isDrawnWhenOccluded = true
collisionBehavior = CollisionBehavior.REQUIRED
})
// Marker 2: REQUIRED_AND_HIDES_OPTIONAL
googleMap3D.addMarker(markerOptions {
position = latLngAltitude {
latitude = 52.519605780912585
longitude = 13.406867190588198
altitude = 150.0
}
label = "Colliding Behavior: REQUIRED_AND_HIDES_OPTIONAL"
altitudeMode = AltitudeMode.ABSOLUTE
isExtruded = true
isDrawnWhenOccluded = true
collisionBehavior = CollisionBehavior.REQUIRED_AND_HIDES_OPTIONAL
})
// Marker 3: OPTIONAL_AND_HIDES_LOWER_PRIORITY
googleMap3D.addMarker(markerOptions {
position = latLngAltitude {
latitude = 52.519882191069016
longitude = 13.407410777254293
altitude = 50.0
}
label = "Colliding Behavior: OPTIONAL_AND_HIDES_LOWER_PRIORITY"
altitudeMode = AltitudeMode.RELATIVE_TO_GROUND
isExtruded = true
isDrawnWhenOccluded = true
collisionBehavior = CollisionBehavior.OPTIONAL_AND_HIDES_LOWER_PRIORITY
})