9

かなり大きなアイコンを持つ複数のマーカーを含むレイヤーがあるため、それらは重なっています。マップの横にあるリストからユーザーがマーカーを選択すると、マップがパン (およびズーム) されます。しかし、それはまだ他のいくつかのメーカーに遅れをとっています。個々のメーカーの z-index を取得して設定するにはどうすればよいですか? 使用されている最大の z-index を取得し、1 つだけ追加すると便利です。(別の解決策は、マーカーの総数を z-index に追加することです)

マーカー (または機能) は myLib.features 配列にあります。コンソールには、z-index タイプの関数は表示されません。

これに適した例や API 関数が見つかりません。

編集:

この例を見つけました: http://dev.openlayers.org/examples/ordering.html よくわかりません。どういうわけか、作成されたフィーチャは、ある種のシンボライザーを介してレイヤーによって指定された次の z インデックスを取ります。この静的ソートを動的ソートにする方法がわかりません。

4

1 に答える 1

3

これを試して:

まず、OpenLayers.Layer.Markersレイヤーではなく、OpenLayers.Layer.Vectorレイヤーを使用していることを確認してください。どうやらMarkersレイヤーは古いニュースであり、すべての新しい開発はVectorレイヤーで行われます。より多くの機能があります。(私はマーカーレイヤーで多くの時間を無駄にしました)。

次に、各マーカーは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

そのサンプルページも見つけましたが、混乱もしました。マーカーのコンストラクターではなく、ベクターレイヤーのコンストラクターですべてのマーカーのスタイルを設定していました(マーカースタイルが省略された場合に使用されるデフォルト値として)。マーカーコンストラクターでマーカースタイルを設定する方が理にかなっていると思います。

リアルタイムでスタイルを変更するには、「マーカー」と呼ばれるOpenLayers.Feature.Vectorマーカーの1つを取得してこれを行います。そして、ベクターレイヤーを「レイヤー」と呼びましょう。

marker.style.graphicZIndex = 13;
layer.redraw();
于 2012-07-30T16:17:58.763 に答える