2017-10-03 12 views
0

GIS 시스템의 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++; 
} 

각 층의 데이터 필드 "항목"에 저장된 다른 카테고리로 세분화하고, I는 측면 범례 해당 카테고리를 나타낸다.

제 질문은지도의 각 세그먼트별로 '항목'을 찾는 방법입니다. 지도 객체를 볼 때 레이어를 볼 수 있습니다. 레이어에 들어가면 프리미티브를 볼 수 있지만 프리미티브를 입력하면 모든 항목에 "항목"이 있어야합니다.

각 세그먼트에 대해 '항목'을 어떻게 찾을 수 있습니까?

감사 Docmur

답변

1

첫째, 그렇지 않으면 당신은 레이어 클래스의 내부 속성 중 하나를 덮어 위험, 사용자 정보를 저장하는 계층의 메타 데이터 속성을 사용합니다. 예를 들면 다음과 같습니다. dataLayer.metadata = {item : "custom data"};

즉, 아이템 속성은 개별 프리미티브가 아닌 dataLayer에 있습니다. 또한 내부 루프에서 동일한 값을 반복하여 추가하면 마치 같은 값을 많이 갖게 될 것입니다. 이 작업을 수행하는 훨씬 더 깨끗한 방법 일 가능성이 있으므로 달성하려는 것에 대한 자세한 내용을 제공 할 수 있습니까?

+0

물론지도에는 $ scope.thing으로 식별되는 10 - 20 개의 서로 다른 레이어의 데이터가 저장됩니다. bArray에서 WKT를 가져 오는 것이 백엔드에서 반환되며 수천 또는 수십 개의 객체가있을 수 있습니다. 각 객체에는 $ scope.thing과 일치하는 항목, 개수 항목이 있습니다. WKT 등이있다. 범주는 범례에 나열되어 있으며 각 범주는 확인란으로 전환 할 수 있습니다. 누군가 범주를 전환 할 때 해당 범주와 일치하는 모든 세그먼트를 숨기려고합니다. 따라서이 범주를 기본 요소에 바로 쓰려고합니다. – user1772086