Select 互动 'select' 事件

Select interaction 'select' event

我为我的 ol3 地图创建了一个 select 交互并附加了一个 select 事件处理程序。

selectInteraction = new ol.interaction.Select({
    ...
});

selectInteraction.on('select', function (evt) {
    ???;
});

我如何询问 'evt' 以确定:

这里有一些应该对您有帮助的项目。evt.selected 为您提供所选的功能。此示例位于群集图层上,您可以对所选要素使用 get 函数以从所选对象检索属性。如果您不知道可用的属性,请使用 console.dir(evt) 使用控制台检查对象。

   selectInteraction.on('select', function(evt){
      var coord = evt.mapBrowserEvent.coordinate;
      var selItems = evt.selected;
      var sellength = selItems.length;
      var rptFrame = parent.window.frames["rptframe"];
      for (var i = 0; i < sellength; i++) {
        var label = selItems[i].get('l');
        var url = selItems[i].get('url');
        if (url) {
          rptFrame.location.href = url;
        } else {
          var feaObj = selItems[i].get('features');
        if (feaObj.length == 1) {
           url = feaObj[0].get('url');
           rptFrame.location.href = url;
        } else {
          writeMultiSelect(rptFrame,selItems);
        }
      }
    }
  });

ol.SelectInteraction 发出的 select 事件记录在案 here

如您所见,evt.selected 将是刚刚选择的所有特征的数组。它不会包含已选择的功能,当 addCondition 为真时单击新功能时这些功能将保持选中状态。这些是尚未被选中且与要包含在选择中的筛选器相匹配的已单击要素。

同样,evt.deselected 将包含刚刚取消选择的所有功能。

您可以通过以下方式获取每个功能的 ID 和属性:

var featureID = feature.getId()
var properties = feature.getProperties()
var someSpecificProperty = feature.get("property-name")

请参阅 ol.Feature 的文档以了解有关该功能及其属性的更多信息。