2017-06-22 4 views
0

Bing Maps v7では、私はentityCollectionにプッシュピンを追加した後、そのコレクションの後にコードをループしてオプションなどを設定することができました。今、v8のレイヤーからピンを取得するのに問題があります。ここでBing Maps v8ではループ内のレイヤーから押しピンオブジェクトを取得できますか?

は、私はすでにentityCollectionにピンを追加した後、私はV7で行うために使用するものである:

for (var i = 0; i < entityCollection.getLength() ; i++) { 
    var pin = entityCollection.get(i); 
    pin.setOptions({ visible: true }); 
} 

私はV8のためのレイヤーにオブジェクトentityCollectionを変更していると私はまた、層をループしていますwhile

現在、Bing Maps v8では、私が既に追加したレイヤーからピンオブジェクトを取得できません。上記のコードははsetOptionsライン上のエラーをスローし、私はまたしてピンを取得しようとしている:

entityCollection.data[i] 

代わりの

entityCollection.get(i) 

しかし、それはどちらか動作しません。実際に私の質問に答えるものは何も見つからないので、私の質問はあまりにも一般的なのではないかと思います。私は回避策がありますが、それは後で特定の属性を持つすべてのピンを非表示にしたいときに失敗を引き起こします。前もって感謝します!

答えて

1

はい、V8レイヤーにはすべてのシェイプを含む配列を返すgetPrimitives関数があります。他の配列と同じように、これらの図形をループすることができます。

+0

ここでも問題があります。私は私のデータに16項目があることがわかりますが、レイヤー上で "getPrimitives"関数を使用すると、長さ0の配列であることがわかります。 – PopeDarren

+1

メインリリースブランチでいくつかのテストを実行しましたが、これは正常に動作しています。レイヤーを作成し、データを追加してからループするために、v8コードを提供できますか? – rbrundritt

+0

私は本当にあなたの助けに感謝しますが、私はちょうど回避策を働いています。私はすでにこれであまりにも多くの時間を過ごしたので、私はそれに行くつもりです。ありがとうございました! – PopeDarren

2

Bing Maps v8はentityCollectionで終了しました。まだサポートされていると言われていますが、もう廃止予定のものを使用したくないと思います。

entityCollectionがある場合は、LayerMicrosoft.Maps.Layer)に置き換えてください。 Layerは内容の配列を提供するgetPrimitives()メソッドを公開しています。

var map = new Microsoft.Maps.Map(..., ...); 

var layer = new Microsoft.Maps.Layer(); 
// Add layer data... 
layer.add(new Microsoft.Maps.Pushpin(...)); 

// Add layer to map 
map.layers.insert(layer); 

// Then you can iterate 
var layerItems = layer.getPrimitives(); 
var len = layerItems.length; 

for(var i = 0; i < len; i++){ 
    var pin = layerItems[i]; 
    // Do something with your pin 
    pin.setOptions({visible: false}); 
} 

あなたがそのような層内のすべてのピンを示すか、隠しよう、層の全体の内容に大量の更新をやっている場合、あなたは層の上に直接それを行うことに注意してください。これにより、ブラウザ(ブラウザ)に各ピンを個別に設定する作業が節約されます。

layer.setVisible(true); 
+0

このコードスニペットは問題を解決するかもしれませんが、[説明を含む](http://meta.stackexchange.com/questions/114762/explaining-entirely-code-based-answers)は本当にあなたの投稿の質を向上させるのに役立ちます。将来読者の質問に答えていることを覚えておいてください。そうした人々はあなたのコード提案の理由を知らないかもしれません。 –

+1

@PatrickHundあなたは正しいです、怠惰な答えです。私は時間がある今、拡大します。 – Krenom

関連する問題