マップ上にいくつかのマーカーが表示されていますが、それらは互いに近接しているか、重なり合っています。常に上に 1 つの特定のマーカーを配置する必要があります。マーカーをマップに最初に追加するか最後に追加するかは問題ではありません。多くの場合、いくつかのマーカーの後ろに配置されます。不思議な理由で、Google マップがこれを決定します。Android V2 の Google マップで動作する必要があります。
4 に答える
2016 年 6 月 27 日にリリースされた Android Maps API v2 の v9.2.0 では、z-index がサポートされるようになりました。
そのため、マップ/プレイ サービスのバージョンが で v9.2.0 以降に設定されていることを確認してくださいbuild.gradle
。
compile 'com.google.android.gms:play-services-maps:9.2.0'
z-index ドキュメントは以下のとおりです ( https://developers.google.com/maps/documentation/android-api/marker#marker_z-indexから):
z-index は、マップ上の他のマーカーに対する、このマーカーのスタック順序を指定します。高い z インデックスを持つマーカーは、低い z インデックスを持つマーカーの上に描画されます。デフォルトの z-index 値は 0 です。
マーカーは、他のオーバーレイの z-index に関係なく、常にタイル レイヤーおよびその他の非マーカー オーバーレイ (グラウンド オーバーレイ、ポリライン、ポリゴン、およびその他の形状) の上に描画されます。マーカーは、他のオーバーレイと比較して、実質的に別の z-index グループにあると見なされます。
マーカーをマップに追加するときにインデックスを設定できます。
map.addMarker(new MarkerOptions()
.position(new LatLng(10, 10))
.title("Marker z1")
.zIndex(1.0f));
...またはMarker.setZIndex()
マーカーの作成後に使用します。
クリック イベントに対する z-index の効果に関するその他のドキュメントは以下のとおりです ( https://developers.google.com/maps/documentation/android-api/marker#marker_click_eventsから)。
- ユーザーがマーカーのクラスターをクリックすると、最大の z-index を持つマーカーに対してクリック イベントがトリガーされます。
- クリックごとに最大 1 つのイベントがトリガーされます。つまり、クリックはマーカーやその他の z-index 値が低いオーバーレイには渡されません。
- マーカーのクラスターをクリックすると、その後のクリックでクラスターが循環し、それぞれが順番に選択されます。サイクルの順序は、最初に z-index を優先し、次にクリック ポイントへの近さを優先します。
- ユーザーがクラスターの近くの外側をクリックすると、API はクラスターを再計算し、クリック サイクルの状態をリセットして最初から開始するようにします。
- クリック イベントは、サイクルを再開する前に、マーカー クラスターを介して他の形状やオーバーレイに落ちます。
- マーカーは、他のオーバーレイの z-index に関係なく、他のオーバーレイまたは形状 (ポリライン、ポリゴン、円、および/またはグラウンド オーバーレイ) と比較して、別の z-index グループにあると効果的に見なされます。複数のマーカー、オーバーレイ、または形状が重なり合っている場合、クリック イベントは最初にマーカーのクラスターを循環し、次に z-index 値に基づいて、他のクリック可能なオーバーレイまたは形状に対してトリガーされます。
残念ながら、Markers
Android 用の Google Map API V2 には z インデックスがありません。彼らは独自の描画順序を処理します
この投稿はGoogle Maps v2 Marker zOrdering - Set to topの複製だと思います。Bastien Beurier の回答では、Marker.showInfoWindow() ソリューションを使用し、実際に情報ウィンドウを表示したくない場合に 0x0 情報ウィンドウを作成する方法も示しています。
また、TextView を LinearLayout に追加することについての回答の下にある私のコメントにも注意してください。