在使用defaultStyle ()时,我很难理解defaultStyle。我正在编写的特性没有单独的样式,所以我想将图层样式应用到KML功能中。我试过这个:
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是做什么的,什么时候使用它呢?
也许defaultStyle只适用于阅读KML,而不是写作?
发布于 2017-03-26 11:18:51
KML与其他特性格式不同。它被设计为带有风格的功能。因此,在编写KML时,只有与特性相关的样式才会出现在KML中。这与defaultStyle设置无关,后者只在没有为特性配置样式时配置用于readFeatures的样式。
https://stackoverflow.com/questions/43019869
复制相似问题