2016-07-05 3 views
0

Возможно ли получить прикладной стиль для выбранной функции? Мой слой использует функцию стиля вместо ol.style.Style. Когда я вызываю myFeature.getStyle(), он возвращает функцию.OpenLayers 3 - Получить прикладной стиль для визуализированной функции

Обновление моего вопроса некоторыми вещами, которые я пробовал до сих пор, основываясь на ответах здесь и в других местах.

В результате я создал функцию выбора для каждого слоя.

Это не работает, ни один стиль не возвращается:

selectInteraction = new ol.interaction.Select({ 
    style: function(feature, resolution) { 
     if (feature.selectStyle) { 
      return feature.selectStyle; 
     } 
    }, 
    layers: mylayers 
}); 

Кроме того, с вышесказанным я получаю следующее сообщение об ошибке:

Uncaught TypeError: style.getImage is not a function 
    ol.renderer.vector.renderFeature    @ol.js:38455 
    ol.renderer.canvas.VectorLayer.renderFeature @ol.js:44202 
    renderFeature         @ol.js:44148 
    ol.renderer.canvas.VectorLayer.prepareFrame  @ol.js:44164 
    ol.renderer.canvas.Map.renderFrame    @ol.js:45268 
    ol.Map.renderFrame_        @ol.js:52034 
    (anonymous function)       @ol.js:50898 

Это работает, функция визуализируется с помощью моего выберите стиль. Тем не менее, я не хочу, чтобы управлять повторной настройки стилей, так что это действительно должно быть реализовано в selectInteraction:

evt.selected.forEach(function(evt) { 
    evt.setStyle(evt.selectStyle); 
}, this); 

ответ

0

Я думаю, вы должны использовать myFeature.getStyleFunction() вместо myFeature.getStyle().

Удачи.

0

Вы должны вызвать функцию с помощью функции (и, при необходимости, разрешения, если ваша функция стиля зависит от нее). Итак, что-то вроде: myFeature.getStyle(). Call (this, feature); или myFeature.getStyle(). call (это, функция, разрешение);

+0

Я пробовал это, но myFeature.getStyle() возвращает null. Как это свойство styleFunction_ функции не определено, когда оно было написано? – MoreScratch