2012-06-04 16 views
8

私は大きなアイコンを持つ複数のマーカーを持つレイヤーを重ねています。地図の側面にあるリストを使用して、ユーザーはマーカーを選択でき、マップはそのマーカーをパン(およびズーム)します。しかしそれはまだ他のメーカーの後ろにあるでしょう。 個々のメーカーのZインデックスを取得して設定するにはどうすればよいですか?最高の使用済みZ-インデックスを取得して追加するだけで便利です。 (別の解決策は、Z-インデックスにマーカーの総数を追加することです)openlayersのマーカーのZ-インデックスを変更します

マーカー(またはフィーチャー)は、myLib.features配列にあります。コンソールには、z-index型の関数は表示されません。

このために適切なサンプル関数またはAPI関数が見つかりません。

EDIT:

私はこの例を見つけました:http://dev.openlayers.org/examples/ordering.html 私は実際にそれを理解していません。何らかの形で、作成されたフィーチャは、シンボルのいくつかを介してレイヤによって与えられた次のz-インデックスを取ります。この静的ソートをどのように動的なものにするかはわかりません。

答えて

2

これを試してみてください:すべての

まず、あなたがOpenLayers.Layer.Vector層ではなく、OpenLayers.Layer.Markers層を使用していることを確認してください。明らかにMarkersレイヤーは古いニュースであり、すべての新しい開発はVectorレイヤーで行われています。それはより多くの機能を持っています。 (私は自分自身でMarkersレイヤーで時間を浪費しました)。

次に、それぞれのマーカーはOpenLayers.Feature.Vectorオブジェクトである必要があります。コンストラクタには3つの引数があり、そのうちの3つ目はスタイルと呼ばれます。スタイルは、イメージ属性、背景の影、マウスオーバーテキスト、およびプロパティ名「graphicZIndex」を持つz-indexを設定する場所です。私はそれがあなたが探しているものだと思います。

http://dev.openlayers.org/releases/OpenLayers-2.12/doc/apidocs/files/OpenLayers/Feature/Vector-js.html#OpenLayers.Feature.Vector.OpenLayers.Feature.Vector.style

addFeatures機能を使用してベクトル層に(ベクター社のある)あなたの「マーカー」を追加します。そして、 "options"引数を無視してください。

http://dev.openlayers.org/releases/OpenLayers-2.12/doc/apidocs/files/OpenLayers/Layer/Vector-js.html#OpenLayers.Layer.Vector.addFeatures

私もその一例のページを発見し、私はそれがあまりにも混乱を発見しました。マーカーのコンストラクタではなく、Vectorレイヤのコンストラクタ内のすべてのマーカーのスタイルを(マーカースタイルが省略された場合に使用されるデフォルト値として)設定していました。マーカーコンストラクタでマーカースタイルを設定する方が意味があると思います。

「マーカー」と呼ばれるあなたのOpenLayers.Feature.Vectorマーカーの一つを、取り、これを行う、リアルタイムでスタイルを変更します。そして、Vectorレイヤーを "レイヤー"と呼んでみましょう。

marker.style.graphicZIndex = 13; 
layer.redraw(); 
+0

これは機能しませんでしたが、これはhttps://gis.stackexchange.com/a/80574/8280でした –

関連する問題