gpt4 book ai didi

javascript - 在 OpenLayers 5 中获取 KML 样式

转载 作者:行者123 更新时间:2023-12-01 01:17:41 25 4
gpt4 key购买 nike

我在应用程序中有一些代码可以访问 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插入谷歌翻译后,它似乎说不再在每个功能中存储样式属性,但似乎没有说明它们存储在哪里......

KML 有效并在 map 上正确显示。我似乎无法再找到访问样式数据的方法。

最佳答案

在 OpenLayers 3 和 4 中,要素样式函数仅接受分辨率参数,但在内部使用 this,因此函数或调用必须绑定(bind)到要素:

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

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

在 OpenLayers 5 中,要素样式函数与图层样式函数类似,并且要求要素作为参数传递:

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

关于javascript - 在 OpenLayers 5 中获取 KML 样式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54582197/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com