2
리오 렛지도에 geojson 레이어를로드 중입니다. geojson에 저장된 속성에 따라 svg 요소의 ID를 설정하려고합니다.리플릿의로드시 geojson 기능에 ID 추가
필자는 onEachFeature 함수를 사용한다고 가정하지만 구문 분석 할 때 해당 기능의 ID를 설정하는 방법을 볼 수 없습니다.
요소의 ID를 어떻게 할당합니까?
리오 렛지도에 geojson 레이어를로드 중입니다. geojson에 저장된 속성에 따라 svg 요소의 ID를 설정하려고합니다.리플릿의로드시 geojson 기능에 ID 추가
필자는 onEachFeature 함수를 사용한다고 가정하지만 구문 분석 할 때 해당 기능의 ID를 설정하는 방법을 볼 수 없습니다.
요소의 ID를 어떻게 할당합니까?
onEachFeature
방법을 사용하는 것이 가능하지 만 L.GeoJSON
입니다. 다음 이유로 인해이 : 당신이 L.GeoJSON
에서 eachLayer
방법을 사용하는 경우
var geoJsonLayer = L.geoJson(null, {
onEachFeature: function (feature, layer) {
// At this point 'layer._path' exists in the layer object
// but it will return as 'undefined' so this is of no use
// So the following doesn't work:
layer._path.id = 'feature-' + feature.properties.id
}
});
그러나, layer._path
그러나 그것은 단지 GeoJSON 층이지도에 추가 한 후이 작업을 수행 할 것입니다, 실제 SVG 경로 요소를 반환합니다. 지도에 레이어를 추가하기 전에 이렇게하면 layer._path
은 여전히 undefined
으로 반환됩니다. 그래서이 시도 : http://plnkr.co/edit/7IPHrO?p=preview
환상적인 :
여기 Plunker에 동작하는 예제입니다! 매력처럼 작동합니다. 다른 사람들을위한 간단한 노트, 내 구현에 나는 경로를 가지고 통과하지 않고 통과되는 몇 가지 추가 기능을 얻고 있던대로 변수를 할당하기 전에 정의되었는지 확인했다. 감사! – user611478
그래서 추가 기능은 다중 다각형이라는 것을 알았고 위의 해결 방법으로 건너 뜁니다. 대신 다중 다각형 피처의 각 레이어를 반복해야합니다. 따라서 클래스의 사용은 원래의 질문에서 제기 된 ID보다 더 적절합니다. 'if (typeof layer._path! = 'undefined') { layer._path.id = layer.feature.properties.id; } else { layer.eachLayer (function (layer2) { layer2._path.id = layer.feature.properties.id; }); }' – user611478