Openlayers 5选择向量

Openlayers 5选择向量,openlayers,openlayers-5,Openlayers,Openlayers 5,我试着效仿 我已经将其添加到按钮的(单击)处理程序中 当我写出选择和取消选择的内容时,我看到选择在控制台中起作用。但是,向量样式不会更改以显示它已被选中,并且在示例中我没有看到样式。所以,我只是假设它现在是ol/interaction/Select.js的一部分 在大多数情况下,首选的解决方案是使用图层和交互样式为特征设置样式。如果单个样式或样式数组足以满足每种情况下的所有功能,只需指定: let vectorLayer = new VectorLayer({ source: mySourc

我试着效仿

我已经将其添加到按钮的(单击)处理程序中

当我写出选择和取消选择的内容时,我看到选择在控制台中起作用。但是,向量样式不会更改以显示它已被选中,并且在示例中我没有看到样式。所以,我只是假设它现在是ol/interaction/Select.js的一部分


在大多数情况下,首选的解决方案是使用图层和交互样式为特征设置样式。如果单个样式或样式数组足以满足每种情况下的所有功能,只需指定:

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); });
});

默认编辑样式将应用于交互,就像默认样式应用于向量层一样。但是,如果您直接在要素上设置了样式,该样式将覆盖这两个默认值。另外,从一些来源导入的功能,如KML有自己的风格。非常感谢!!我应该在哪里定义在选择向量时显示的样式
selectClick.on('select', function(e) {
  e.selected.forEach(function(feature) { feature.setStyle(selectedStyle); });
  e.deselected.forEach(function(feature) { feature.setStyle(deselectedStyle); });
});