OpenLayers 3でダブルクリックズームを無効にする


8

私はそれをWeb全体で検索し、artamstrong.comで「mouseWheelZoom」のような単一の機能を無効にする方法を見つけました。

OpenLayers 3でのダブルクリックズームを無効にする方法は次のとおりです。

var map = new ol.Map({
    controls : ol.control.defaults()
                .extend([ new ol.control.FullScreen() ]),
    interactions : ol.interaction.defaults({doubleClickZoom :false}),
    target : 'map',
    layers : [ new ol.layer.Tile({
            title : 'OpenStreetMaps',
            preload : Infinity,
            source : new ol.source.OSM(),
            visible : true
    }) ],
    view : new ol.View({
            center : ol.proj.transform([ 9.41, 48.82 ], 'EPSG:4326','EPSG:3857'),
            zoom : 12
    })
});

本当に簡単です。ol3に「doubleClickZoom」をfalseに設定するように指示してください。

interactions : ol.interaction.defaults({doubleClickZoom :false})

5
こんにちは脳、GIS @ Seへようこそ。これは非常に役立つ情報ですが、このサイトでは特定の質問と回答を投稿する必要があります。質問を自由に編集して質問にしてから、ソリューションで答えてください。質問を投稿する人は自分の質問に答えることができます。
Mark Cupitt 2014

回答:


8

マップの初期化後にdoubleClickZoomを無効にする場合は、次の方法です。

var dblClickInteraction;
// find DoubleClickZoom interaction
map.getInteractions().getArray().forEach(function(interaction) {
  if (interaction instanceof ol.interaction.DoubleClickZoom) {
    dblClickInteraction = interaction;
  }
});
// remove from map
map.removeInteraction(dblClickInteraction);

PinchZoom、KeyboardZoomなどの操作を削除または追加することもできます。同じ方法で。


アレイでは、使用することができますfindの代わりにforEachconst dblClickInteractio = map.getInteraction().getArray().find((interaction ) => { return interaction instanceof ol.interaction.DoubleClickZoom })
YairTawil

@YairTawil知っておくと良い。しかし、find代わりに使用する利点はありforEachますか?
Chase Choi

1
確かに、findはループを解消します... forEachは常にn回実行されます
YairTawil 2017

複数の相互作用filterがある場合は、同様に使用できます。
Chase Choi

1
getInteractions()ではなく、getInteractions()の最後に「s」が付いたmap.getInteractions()。getArray()である必要があります。実際にははるかに
明確

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.