【发布时间】:2016-12-30 05:18:52
【问题描述】:
在 OpenLayers 中,我们过去常常为添加到图层的每个单独的特征单独设置样式:
let feat = new ol.Feature(geometry);
feat.setStyle(myStyle);
较新版本的 OpenLayers 非常关注“styleFunction”功能,您只需定义 1 个样式函数,而不是单独为每个功能设置样式:
let layer = new ol.layer.Vector({
source: mySource,
style: myStyleFunction
});
function myStyleFunction(feature) {
console.log('calling style function');
let props = feature.getProperties();
if (props.drawBlue) {
return new ol.style.Style(...);
} else {
return new ol.style.Style(...);
}
}
我注意到的主要事情是:“调用样式功能”记录在地图的每个平移和地图的每次缩放中,用于图层上的所有功能。似乎 myStyleFunction 正在为图层上的所有功能执行,在每个用户输入到地图时。
问题:在 DOM 上使用 styleFunction 特性是否比为每个特性使用独立样式更重?我们将使用数以千计的功能,并想知道什么会产生最佳性能。使用旧方法,我无法真正找到一种方法来了解何时在后台重绘特征,但我们只设置了一次样式,之后就没有修改过。那么这是否意味着旧方法的性能更好?
虽然 OpenLayers 3 的内部工作非常复杂并且依赖于很多东西,但我希望你们中的某个人可能对这个功能有所了解。谢谢。
【问题讨论】:
标签: javascript gis openlayers-3