繁体   English   中英

在OpenLayers 5中获取KML样式

[英]Get KML style in OpenLayers 5

我在应用程序中有一些代码可以访问KML层中选定功能的样式。 它在OpenLayers 3.1中工作。 我现在已经升级到5.3.0,它停止工作。 请参阅以下相关行:

var featStyle = feature.getStyleFunction().call(feature, map.getView().getResolution());
var strokeWidth = featStyle[0].getStroke().getWidth();
var strokeColor = featStyle[0].getStroke().getColor();
var fillColor = featStyle[0].getFill().getColor();
var fillOpacity = (Math.round(fillColor[3] * 100));

该行:

var featStyle = feature.getStyleFunction().call(feature, map.getView().getResolution());

产生在开发人员控制台中可见的错误:

TypeError: o.getGeometry is not a function[Learn More] KML.js:943
    a KML.js:943
    myFunctionName file.php:5371
    onclick file.php:1

我在文档或示例中找不到任何内容来说明如何正确访问给定功能(而不是整个图层/源)的KML样式数据。 有什么新方法可以做到吗?还是我错过了什么?

可能与它有关吗?: https : //github.com/IGNF/geoportal-sdk/issues/2插入Google翻译后,似乎可以说不再在每个功能中存储样式属性了,但似乎没有说出它们的存储位置...

KML有效,并在地图上正确显示。 我似乎再也找不到一种访问样式数据的方法。

在OpenLayers 3和4中,要素样式函数仅采用一个解析度参数,但在内部使用this参数,因此必须将功能或调用绑定到该要素:

feature.getStyleFunction().bind(feature)(map.getView().getResolution());

要么

feature.getStyleFunction().call(feature, map.getView().getResolution());

在OpenLayers 5中,要素样式函数与图层样式函数相似,并且需要将该要素作为参数传递:

feature.getStyleFunction()(feature, map.getView().getResolution());

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM