このページでは、マーカーが重なった場合の動作を制御する方法について説明します。
マーカーが重なった場合の動作を設定する
重なった場合の動作とは、マーカーの表示位置が他のマーカーと重なった際にどのように表示されるかということです。高度なマーカーの作成方法によって、重なった場合の動作が決まります。
BitmapDescriptorFactory
を使って作成した高度なマーカーは、ビットマップ マーカーと呼ばれます。これらのマーカーは、コアマップによって描画されます。AdvancedMarkerOptions.iconView()
メソッドで作成されたものを含め、その他すべての高度なマーカーは View マーカーと呼ばれ、コアマップ上のレイヤに描画されます。
重なった場合の動作を指定するには、AdvancedMarkerOptions.collisionBehavior
を次のいずれかに設定します。
CollisionBehavior.REQUIRED
(デフォルト): 他のマーカーと重なっていても常に表示されます。CollisionBehavior.REQUIRED_AND_HIDES_OPTIONAL
: 他のマーカーと重なっても常に表示されますが、このマーカーと表示位置が重なるOPTIONAL_AND_HIDES_LOWER_PRIORITY
のマーカーとラベルはすべて非表示になります。CollisionBehavior.OPTIONAL_AND_HIDES_LOWER_PRIORITY
: 他のマーカーと表示位置が重ならない場合にのみ表示されます。2 つのビットマップ マーカーが重なった場合は、
zIndex
の高いほうが表示されます。zIndex
も同一の場合、画面内の縦位置が低いほうが表示されます。zIndex
について詳しくは、マーカーの z-index をご覧ください。2 つの View マーカーが重なった場合は、
zIndex
の高いほうが表示されます。zIndex
が同じ場合、最後に作成されたマーカーがそれより前に作成されたマーカーの上に重なって表示されます。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);