2016-10-27 3 views
1

Моего вопроса следует по этому вопросу: OpenLayers 3 select styleВыберите стиль взаимодействия не используется, если функция имеет свой собственный стиль

Когда функция имеет свой собственный стиль (а не используя стиль своего слоя) «стиль ol.interaction.Select «свойство не используется, или если свойство« style »является функцией, функция не вызывается.

Это http://jsfiddle.net/y13xLmx6/13/ такая же, как jfiddle, представленной в ответ на OpenLayers 3 select style вопрос, но с добавлением стиля применяется к функции линии:

featureLine.setStyle(new ol.style.Style({ 
    stroke: new ol.style.Stroke({ 
    color: 'rgba(24, 24, 24, 0.8)', 
    width: 8 
    }) 
})) 

Когда выбрана функция линия желтый выберите стиль взаимодействия не применяется, а также не выполняется оператор console.log(). Функция FeaturePoint, которая не имеет назначенного ему стиля, получает стиль взаимодействия и выполняется оператор console.log().

Как вы применяете стиль взаимодействия к функции, которая имеет свой собственный стиль?

ответ

0

Не уверен, почему выбрать взаимодействие не регистрируется при выборе линии, но вы можете установить другой стиль на select событие:

select.on('select', function(evt){ 
    evt.selected.forEach(function(each) { 
    each.setStyle(styles[each.get('type')]); 
    }); 
    evt.deselected.forEach(function(each) { 
    each.setStyle(null); // more likely you want to restore the original style 
    }); 
}); 
+0

Спасибо вам за это. Итак, вкратце, правильно ли утверждать, что свойство style для выбранного взаимодействия используется только тогда, когда функции стилизованы слоем, и что, когда функции стилизованы индивидуально, их выбранный/отмененный стиль должен быть закодирован внутри .on (' select ')? Кажется, это то, что я вижу, но это не интуитивно для меня. –

+0

Ну, похоже, для подтверждения этого поведения нужны еще несколько тестов. –