2017-10-03 10 views
0

J'ai un objet volumineux, rempli d'informations WKT provenant d'un système SIG. Je suis en boucle sur les données et le mappage en couches, puis en poussant ces couches sur la carte. Cela fonctionne bien et je reçois les bonnes données.Bing Maps Calques - Recherche d'informations sur le segment

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++; 
} 

Les données de chaque couche se décompose en différentes catégories, stockées dans le champ « objet », et je montre ces catégories dans une légende côté.

Ma question est comment puis-je trouver "item" pour chaque segment sur la carte? Quand je vois l'objet carte, je peux voir les couches, quand je vais dans les couches, je peux voir les primitives, mais quand j'entre dans la primitive, elles ont toutes la même catégorie dans "item", au lieu de ce qu'elles devraient avoir. Comment puis-je trouver «article» pour chaque segment?

Merci Docmur

Répondre

1

Tout d'abord, utilisez la propriété de métadonnées de la couche pour stocker les informations personnalisées, sinon vous risquez d'écraser l'une des propriétés internes de la classe de couche. Par exemple: dataLayer.metadata = {item: "données personnalisées"}; Cela dit, la propriété de votre élément se trouve sur la couche de données et non sur les primitives individuelles. Il semble également que vous ajoutez la même valeur à un autre sur la boucle interne de sorte que vous vous retrouverez avec beaucoup de valeurs qui sont les mêmes. Pouvez-vous fournir plus de détails sur ce que vous voulez accomplir car il y a probablement une façon beaucoup plus propre de le faire.

+0

Bien sûr, la carte stocke les données de 10 à 20 couches différentes, identifiées par $ scope.thing. BArray que je récupère le WKT de est renvoyé par mon backend, il peut contenir des milliers ou des dizaines de milliers d'objets, où chaque objet a une catégorie, count, qui correspond à $ scope.thing, et certains WKT, entre autres. Les catégories sont listées dans une légende, où chaque catégorie peut être basculée avec des cases à cocher. Lorsque quelqu'un désactive une catégorie, je veux masquer tous les segments qui correspondent à cette catégorie, c'est pourquoi je veux écrire la catégorie directement sur la primitive. – user1772086