web-dev-qa-db-ja.com

Openlayers 3:プログラムで機能を選択する

システムをOpenlayers2からOpenlayers3にアップグレードしようとしていますが、理解できない特定の問題が1つあります。

私のアプリケーションにはグリッドとマップがあり、ユーザーがグリッドをクリックしたときに、マップ上の関連するポイントを選択したいと思います。

Openlayers 2では、以下を使用しました。

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

Openlayers3で同じことを行う方法を見つけたり理解したりできません。

明確にするために、私はプログラムで見つけた機能を持っており、マップ上でその機能を(プログラムで)選択したいと思います!

APIに何も見つからないようですが、Openlayersを初めて使用するため、理解が不足していることが原因である可能性があります。

13
Scott Sellers

これを行うには、次のことを行う必要があります。

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

mySelectControl.getFeatures().Push(featureToSelect) -> selects the applied feature
20
Scott Sellers
var selectInteraction = new ol.interaction.Select(}); 
map.addInteraction(selectInteraction);

function highlightFeature(feat){
   selectInteraction.getFeatures().Push(feat);
   selectInteraction.dispatchEvent({
      type: 'select',
      selected: [feat],
      deselected: []
   });
}

最新のopenlayers4.5ではcharのように機能します

7
Fuad All
  1. 選択したインタラクションをマップに追加します。

    var selectInteraction = new ol.interaction.Select();
    map.addInteraction(selectInteraction);
    
  2. 選択する機能を、選択したインタラクションの機能配列に追加します。

    selectInteractions.getFeatures().Push(featureToSelect);
    
2
JellyRaptor