簡體   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