【问题标题】:Openlayers 3: Select a feature programmaticallyOpenlayers 3:以编程方式选择特征
【发布时间】:2014-10-17 10:02:34
【问题描述】:

我正在尝试将我的系统从 Openlayers 2 升级到 Openlayers 3,但我遇到了一个我似乎无法弄清楚的特定问题。

我的应用程序有一个网格和一个地图,当用户单击网格时,我想选择地图上的相关点。

在 Openlayers 2 中,我使用了以下内容:

self.selectControl.select(feature[0]);

我无法在 Openlayers 3 中找到或理解如何做同样的事情。

为了清楚起见,我有一个以编程方式找到的功能,我想在地图上(以编程方式)选择该功能!

我似乎在 API 中找不到任何东西,但这可能是由于我对 Openlayers 不熟悉而缺乏了解。

【问题讨论】:

    标签: openlayers-3


    【解决方案1】:

    为此,您需要执行以下操作:

    mySelectControl.getFeatures().clear() -> removes the selected items
    
    mySelectControl.getFeatures().push(featureToSelect) -> selects the applied feature
    

    【讨论】:

    • @bebraw - 当 StackOverflow 允许我说我必须再等一个小时(从撰写本文开始)时,我会这样做
    • 谢谢。在任何官方文档或我发现的任何示例中,您都可以将push() 转换为getFeatures() 数组,这一点远非显而易见。 [是的,我知道,这是ol.Collection 的定义所固有的,但这只是事后才明显]
    【解决方案2】:
    var selectInteraction = new ol.interaction.Select(}); 
    map.addInteraction(selectInteraction);
    
    function highlightFeature(feat){
       selectInteraction.getFeatures().push(feat);
       selectInteraction.dispatchEvent({
          type: 'select',
          selected: [feat],
          deselected: []
       });
    }
    

    在最新的 openlayers 4.5 上像 char 一样工作

    【讨论】:

      【解决方案3】:
      1. 向您的地图添加选择交互。

        var selectInteraction = new ol.interaction.Select();
        map.addInteraction(selectInteraction);
        
      2. 将您想要选择的任何特征添加到选择交互的特征数组中。

        selectInteractions.getFeatures().push(featureToSelect);
        

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多