KML 格式 writeFeatures defaultStyle
KML format writeFeatures defaultStyle
我在使用 ol.format.KML writeFeatures() 时无法理解 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,不适用于写作?
KML 不同于其他地图项格式。它旨在承载具有样式的功能。因此,在编写 KML 时,只有与要素关联的样式才会出现在 KML 中。这与 defaultStyle
设置无关,后者仅在未为某个功能配置样式时配置要用于 readFeatures
的样式。
我在使用 ol.format.KML writeFeatures() 时无法理解 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,不适用于写作?
KML 不同于其他地图项格式。它旨在承载具有样式的功能。因此,在编写 KML 时,只有与要素关联的样式才会出现在 KML 中。这与 defaultStyle
设置无关,后者仅在未为某个功能配置样式时配置要用于 readFeatures
的样式。