2013-07-16 14 views
11

私のマップには、お互いの近くに、または上に重ねていくつかのマーカーが表示されています。私は常に上に1つの特定のマーカーを持つ必要があります。マーカを地図に最初に追加するか最後に追加するかは関係ありませんが、マーカの後ろに配置されることがよくあります。不思議な理由のために、Googleマップがこれを判断します。 Android V2用Googleマップを使用する必要があります。AndroidのマップV2の地図マーカーのZ-インデックス(zオーダー)を変更する

答えて

2

残念ながら、Android用Google Map API V2のMarkersにはZ-インデックスがありません。彼らは自分自身の描画順序扱う

+1

2016、これはもはや真..ですのZIndex – amalBit

+0

その真実ではない、今 –

5

見つかりソリューション:

Marker.showInfoWindow();

これは、情報ウィンドウがマーカーの上に表示されるため、最適ではありませんが、何も表示されません。

+0

あなたは0ピクセルでInfoWindowAdapterリターン0を作ることができ、その場合に表示します。 –

+3

Googleがこれを実装していないというのは役に立たない。私は私のアプリのためにそれが必要です、なぜ私は開発者がこれを制御することができないはずです。この解決策は何もないより優れていますが、実際にはハッキーであり、私のアプリにとって多用途ではないと感じています。 –

+0

はい、それは動作しますが、私たちが地図をクリックしない限りです。 私はマーカーの数を持っていますが、すべて独自の情報ウィンドウを持っていますが、地図上をクリックすると上に表示したいマーカーにshowinfowindow()を使用しています。 –

0

私はこの投稿がGoogle Maps v2 Marker zOrdering - Set to topの複製であると信じています。 Bastien Beurierの答えは、Marker.showInfoWindow()ソリューションを使用し、実際にインフォウィンドウが表示されないようにするには、0x0インフォフィールドを作成する方法を示します。

また、TextViewをLinearLayoutに追加する方法については、私のコメントを参考にしてください。

14

Android Maps API v2の2016年6月27日リリースv9.2.0は、z-indexをサポートするようになりました。https://developers.google.com/maps/documentation/android-api/releases#june_27_2016のアナウンスをご覧ください。

だからあなたマップ/プレイ・サービスのバージョンがbuild.gradleにv9.2.0以上に設定されていることを確認します

compile 'com.google.android.gms:play-services-maps:9.2.0' 

Zインデックスのドキュメントは、(https://developers.google.com/maps/documentation/android-api/marker#marker_z-indexから)以下である:

z-indexは、マップ上の他のマーカーに対するこのマーカーのスタック順序を指定します。 Z-インデックスが高いマーカーは、Z-インデックスの低いマーカーの上に描画されます。デフォルトのZ-インデックス値は0です。

マーカーは、他のオーバーレイのZ-インデックスに関係なく、タイルレイヤーや他のマーカー以外のオーバーレイ(グラウンドオーバーレイ、ポリライン、ポリゴン、その他の図形)の上に常に描画されます。マーカーは、他のオーバーレイと比較して、別々のZインデックスグループにあると考えられます。

マップにマーカーを追加するときは、インデックスを設定することができます。

map.addMarker(new MarkerOptions() 
    .position(new LatLng(10, 10)) 
    .title("Marker z1") 
    .zIndex(1.0f)); 

...またはマーカーが作成された後Marker.setZIndex()を使用。クリックイベントのz屈折率の効果に関する

詳細ドキュメントは下記(https://developers.google.com/maps/documentation/android-api/marker#marker_click_eventsから)である:ユーザーがマーカーのクラスタをクリックすると

  • 、クリックイベントを有するマーカーについてトリガされ最も高いz指数。
  • クリックあたり最大1つのイベントがトリガーされます。言い換えれば、クリックは、z-インデックス値の低いマーカーやその他のオーバーレイに渡されません。
  • マーカーのクラスタをクリックすると、後でクリックが繰り返され、順番に選択されます。サイクルの順番は、まずZインデックスに優先順位を付け、次にクリックポイントに近接します。
  • ユーザーがクラスタの近くからクリックすると、APIはクラスタを再計算し、クリックサイクルの状態をリセットして最初から開始するようにします。
  • クリックイベントは、サイクルを再開する前にマーカークラスタを他の図形やオーバーレイに落とします。
  • マーカーは、他のオーバーレイのZ-インデックスに関係なく、他のオーバーレイまたはシェイプ(ポリライン、ポリゴン、サークル、および/またはグラウンドオーバーレイ)と比較して、別々のZ-インデックスグループにあると考えられます。複数のマーカー、オーバーレイ、またはシェイプが重ね合わされている場合、クリックイベントは最初にマーカーのクラスタを循環し、Z-インデックス値に基づいて他のクリック可能なオーバーレイまたはシェイプのためにトリガされます。
+0

ありがとう –

関連する問題