Получить стиль KML в OpenLayers 5 - PullRequest
0 голосов
/ 08 февраля 2019

У меня есть некоторый код в приложении, который обращается к стилю выбранной функции в слое 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 для данной функции (не весь слой / источник).Есть ли новый способ сделать это или я что-то пропустил?

Может ли это быть как-то связано с этим:...

KML действителен и правильно отображается на карте.Я просто не могу найти способ получить доступ к данным стиля.

1 Ответ

0 голосов
/ 08 февраля 2019

В 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());
...