2014-10-17 87 views
6

我试图将我的系统从Openlayers 2升级到Openlayers 3,我遇到了一个我似乎无法解决的特定问题。Openlayers 3:以编程方式选择一个功能

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

在的OpenLayers 2我用下面的:

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

我无法找到或知道如何做相同的OpenLayers 3

所以要清楚,我有我已经找到了功能以编程方式,我想在地图上选择该功能(以编程方式)!

我似乎无法在API中找到任何东西,但这可能是由于我对Openlayers是新手而缺乏理解。

回答

10

要做到这一点,你需要做到以下几点:

mySelectControl.getFeatures().clear() -> removes the selected items 

mySelectControl.getFeatures().push(featureToSelect) -> selects the applied feature 
+0

一个字符,你可以标记该为'accepted'如果你是高兴的解决方案?谢谢。 :) – 2014-10-18 07:45:17

+0

@bebraw - 我会在StackOverflow让我说,我不得不再等一小时(从写作时起) – 2014-10-19 08:35:46

+1

谢谢你。在任何官方文档或者我发现的任何例子中,这都不是很明显,你可以'push()'到'getFeatures()'数组。 _ [是的,我知道,这是'ol.Collection'的定义所固有的,但这只是后见之明] – Auspex 2017-02-23 09:35:56

1
  1. 添加选择的互动地图。

    var selectInteraction = new ol.interaction.Select(); 
    map.addInteraction(selectInteraction); 
    
  2. 将您想要选择的功能添加到选择交互的功能阵列中。

    selectInteractions.getFeatures().push(featureToSelect); 
    
0
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