2017-10-03 14 views
0

私はGISシステムからのWKT情報でいっぱいの大きなオブジェクトを持っています。私はデータをループしてレイヤーにマッピングし、それらのレイヤーをマップにプッシュします。これは正常に動作しており、正しいデータが表示されています。Bing Mapsレイヤー - セグメント情報の検索

for (var j = 0; j < 10; j++) { 
    var dataLayer = new Microsoft.Maps.Layer($scope.thing); 
    for (var i = 0; i < bArray.length; i++) { 
     if (bArray[i].count == $scope.thing) { 
      dataLayer.add(new Microsoft.Maps.WellKnownText.read(bArray[i].wkt); 
      dataLayer.item = bArray[i].count; 
     } 
    } 

    Microsoft.Maps.Events.addHandler(dataLayer, "click", polylineClicked); 
    $scope.map.layers.insert(dataLayer); 
    $scope.map.layers[j].setVisible(false); 
    $scope.thing++; 
} 

各層のデータは、フィールド「アイテム」に記憶されている異なるカテゴリに分解、およびIサイド凡例にこれらのカテゴリを示します。

私の質問は、マップ上の各セグメントの「アイテム」をどのように見つけることですか?マップオブジェクトを見ると、レイヤーが見えますが、レイヤーに入るとプリミティブが見えますが、プリミティブに入ると、「アイテム」には同じカテゴリがあります。

セグメントごとに「アイテム」を見つけるにはどうすればよいですか?

おかげ Docmur

答えて

1

まず第一に、それ以外のレイヤークラスの内部プロパティのいずれかを上書きするリスク、カスタム情報を格納するための層のメタデータプロパティを使用します。例:dataLayer.metadata = {item: "カスタムデータ"};

あなたのアイテムプロパティは、個々のプリミティブではなく、dataLayerにあります。また、同じ値を内側のループに繰り返し重ねているように見えるので、同じ値の多くが得られます。これを行うよりきれいな方法がある可能性が高いため、達成したいことの詳細を提供できますか?

+0

確かに、Mapは$ scope.thingによって識別される10〜20の異なるレイヤーのデータを格納します。 バックグラウンドからWKTを取得しているbArrayがバックエンドから返され、数千または数十のオブジェクトが内部にあります。各オブジェクトには$ scope.thingに一致するカテゴリ、count項目があります。 WKTなどがあります。 カテゴリは凡例に表示され、各カテゴリはチェックボックスで切り替えることができます。誰かがカテゴリをオフに切り替えると、そのカテゴリに一致するすべてのセグメントを非表示にしたいので、そのカテゴリをプリミティブに直接書きたいのです。 – user1772086

関連する問題