2017-03-25 6 views
0

ol.format.KML writeFeatures()를 사용할 때 defaultStyle을 이해하는 데 문제가 있습니다. 작성한 기능에는 개별 스타일이 없으므로 레이어 스타일을 KML 기능에 적용하고 싶습니다. 나는 이것을 시도했다 :KML 형식 writeFeatures defaultStyle

var features = vectorLayer.getSource().getFeatures(); // these do not have styles 
var layerStyle = vectorLayer.getStyleFunction()(features[0], map.getView().getResolution()); 
var kmlFormat = new ol.format.KML({ 
    defaultStyle: layerStyle 
}) 

var kml = kmlFormat.writeFeatures(features, { 
    featureProjection: map.getView().getProjection() // source coord sys 
}); 
console.log(kml); 

그러나 kml에는 스타일링이 없다. 나는 각 기능에 레이어의 스타일을 복사하는 경우 :

features.forEach(function(feature) { 
    feature.setStyle(layerStyle); 
}); 

을 그 다음 KML 내가 {defaultStyle: layerStyle}를 제거 할 경우에도 스타일을 가지고있다. 그러나 레이어의 스타일을 각 개별 기능으로 복사하지 않는 것이 좋습니다. 이상적으로는 kml이 자신 만의 스타일을 가지고 있지 않은 기능에 레이어의 스타일을 사용하고 자신의 스타일을 가진 스타일에 해당 기능의 스타일을 사용하고 싶습니다.

그럼 defaultStyle은 무엇을하고 언제 사용합니까?

OpenLayers docs

아마 defaultStyle는 KML을하지 읽기, 쓰기에만 적용?

답변

2

KML은 다른 기능 형식과 다릅니다. 스타일이있는 기능을 수행하도록 설계되었습니다. 따라서 KML을 작성할 때 기능과 연결된 스타일 만 KML에 저장됩니다. 이 기능은 defaultStyle 설정과 무관하며 기능에 대해 구성된 스타일이 없을 때 readFeatures에 사용할 스타일 만 구성합니다.