2017-06-14 3 views
0

私の目的は、私は同じ機能を選択し、複数回

  • ワンタイムをアイコン(機能)をクリックしたときということです。 17にズームし、サテライトビューに切り替えます。

私は機能に焦点を当て選択的相互作用を利用して情報ウィンドウを開いています:

/*  Click Popover  */ 
selectClick = new ol.interaction.Select({ 
    condition: ol.events.condition.click, 
    multi: false, 
    layers: [vectorLayer, potentialsLayer] 
}); 
map.addInteraction(selectClick); 

selectClick.on('select', (event) => { 
    if (e.selected.length !== 0) { 
     const feature = event.selected[0]; 
     const site = feature.get("site"); 

     if (feature.get('layer') == "main") 
      popover.open(site, true); 

    } else 
     popover.close();   
}); 

ポップオーバーは、フォーカス、ズーム、および情報ウィンドウを扱うためのクラスのインスタンスです。このサイクルズームは既に機能していますが、その機能が既に選択されていて、ユーザーがアイコンをクリックした場合、選択インタラクションはトリガーされません(選択も選択解除もないので)。

map.on('click'...) 、私は選択された相互作用がよりクリーンだと思う。

選択インタラクション内でこれを実装する方法はありますか?

答えて

0

私はこのようにします。各機能には3つのステップがあります。

  1. 機能を選択します。この機能とその機能のステップ番号(つまり、1.Centerと情報ウィンドウ)を記録しておきます。選択したフィーチャは、選択したイベントから取得できます。フィーチャを追跡するには、フィーチャがベクトルレイヤーに追加されたときにそのフィーチャにIDまたは名前を割り当てます。
  2. ステップ1.Centerと情報ウィンドウの機能性炎の詳細を行います。
  3. select.getFeatures().clear();これにより、選択したフィーチャコレクションが消去され、同じフィーチャを再度選択することができます。同じ機能が再び選択され
  4. 、ステップを実行一切2.
  5. 手順3
+0

に同じ詰め込むを繰り返していない私は同じことを考えたが、問題はその後解除次のようになります、何の機能選択がないようその機能から別の場所を押すと、その機能を選択解除することはできません(つまり情報ウィンドウを閉じる)。 – Hunter

関連する問題