2014-10-17 86 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