2016-07-07 3 views
2

マウスホイールのズーム機能を切り替えるにはどうすればよいですか?MouseWheelZoomのオン/オフを切り替える

私はあなたがマップの作成時にmousewheelzoomのデフォルトを設定することができます知っている:

interactions: ol.interaction.defaults({ 
     mouseWheelZoom: false 
    }), 

をしかし、ユーザーが、私は、マウスのホイールを切り替えルーチンを実行したいマップをクリックすると、マップがつまり作成されるとどのように私はそれを変更しますズームして戻る?

私は、これはOpenlayers2にトリッキーだった知っている - あなたはコントロールを循環しなければならなかった:

function PMA_Mapping_Enable_Mouse_Wheel_Zoom(map) { 
//Need to go through all controls - don't know why! 
controls = map.getControlsByClass('OpenLayers.Control.Navigation'); 
for (var i = 0; i < controls.length; ++i) 
    controls[i].enableZoomWheel();}; 

はそれが助け場合は知っているけど、私はそれを含めるべきであると思ったしないでください。

誰かがopenlayers 3でこれを達成する方法を知っていますか?

答えて

2

Mouseweelは対話ではなく、コントロールです。 ですので、いつでも

interaction.setActive(true)interaction.setActive(false)を使用して対話を切り替えることができます。

そうのようなあなたの地図initialazationを開始し

var mouseWheelInt = new ol.interaction.MouseWheelZoom(); map.addInteraction(mouseWheelInt)

し、それトグル:

マップはそうのようなてmouseWheel相互作用を作成する準備ができていたら、その後

......interactions: ol.interaction.defaults({ mouseWheelZoom: false }), .......

mouseWheelInt.setActive(!mouseWheelInt.getActive())

+0

これははるかに優れています - クライアント側のトグル変数を保存する必要はありません! OL2からの移行には慣れていますが、これは大いに役立ちます。どうもありがとう。 –

+0

仲間を助けてうれしい! – pavlos