Openlayers 5 Выберите Вектор - PullRequest
0 голосов
/ 15 апреля 2019

Я пытаюсь следовать этому примеру

Я добавил это в обработчик (щелчок) кнопки

let selectClick = new Select({
condition: click
});

mapValues.map.addInteraction(selectClick);
selectClick.on('select', function(e) {
console.log("Features selected : " + e.target.getFeatures().getLength());
console.log("Features deselected : " + e.deselected.length);  
});

и вижу выборработать в консоли, как я выписать то, что выбрано и отменено.Однако стиль вектора не изменяется, чтобы показать, что он выбран, и я не вижу стиль в примере.Итак, я просто предположил, что теперь это часть ol / взаимодействия / Select.js

Любая помощь в получении стиля, примененного к выбранному вектору, приветствуется

1 Ответ

0 голосов
/ 16 апреля 2019

В большинстве случаев предпочтительным решением будет стилизация объектов с использованием слоя и стилей взаимодействия.Если для каждого объекта достаточно одного стиля или массива стилей, просто укажите следующее:

let vectorLayer = new VectorLayer({
  source: mySource,
  style: deselectedStyle
});

let selectClick = new Select({
  condition: click,
  style: selectedStyle
});

Если стиль может отличаться в зависимости от свойств объекта, используйте функцию стиля для возврата соответствующего стиля:

let vectorLayer = new VectorLayer({
  source: mySource,
  style: function(feature) {
    ...  // choose appropriate deselected style for this feature
    return chosenStyle;
  }
});

let selectClick = new Select({
  condition: click,
  style: function(feature) {
    ...  // choose appropriate selected style for this feature
    return chosenStyle;
  }
});

Если предпочитается стилизация отдельных элементов, стили должны быть установлены и сброшены при выборе и отмене выбора:

selectClick.on('select', function(e) {
  e.selected.forEach(function(feature) { feature.setStyle(selectedStyle); });
  e.deselected.forEach(function(feature) { feature.setStyle(deselectedStyle); });
});
...