Слои Bing Maps — поиск информации о сегменте

У меня есть большой объект, полный информации WKT из системы ГИС. Я перебираю данные и сопоставляю их слоям, а затем помещаю эти слои на карту. Это работает нормально, и я получаю правильные данные.

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

Данные в каждом слое разбиваются на разные категории, хранящиеся в поле «Элемент», и я показываю эти категории в боковой легенде.

Мой вопрос: как мне найти «элемент» для каждого сегмента на карте? Когда я просматриваю объект карты, я вижу слои, когда я захожу в слои, я вижу примитивы, но когда я вхожу в примитив, все они имеют одну и ту же категорию в «элементе», а не то, что они должны иметь.

Как найти «элемент» для каждого сегмента?

Спасибо, Докмур.


person Docmur    schedule 03.10.2017    source источник


Ответы (1)


Во-первых, используйте свойство метаданных слоя для хранения пользовательской информации, иначе вы рискуете перезаписать одно из внутренних свойств класса слоя. Например: dataLayer.metadata = { item: "пользовательские данные" };

Тем не менее, ваше свойство элемента находится на уровне данных, а не на отдельных примитивах. Также похоже, что вы добавляете к нему одно и то же значение снова и снова во внутреннем цикле, поэтому вы получите много одинаковых значений. Можете ли вы предоставить более подробную информацию о том, чего вы хотите достичь, поскольку, вероятно, есть более чистый способ сделать это.

person rbrundritt    schedule 03.10.2017
comment
Конечно, карта будет хранить данные из 10-20 различных слоев, которые идентифицируются $scope.thing. bArray, из которого я беру WKT, возвращается из моего бэкэнда, внутри него могут быть тысячи или десятки тысяч объектов, где каждый объект имеет категорию, элемент подсчета, который соответствует $scope.thing, и некоторые WKT, среди прочих. Категории перечислены в легенде, где каждую категорию можно переключать с помощью флажков. Когда кто-то отключает категорию, я хочу скрыть все сегменты, соответствующие этой категории, поэтому я хочу написать категорию прямо на примитиве. - person Docmur; 03.10.2017