9

私のウェブサイトにカスタム OSM マップを表示するために OpenLayers を使用しています。

注意すべき点がいくつかあります。マップを修正する必要があります (つまり、マップをドラッグしたり、ズームしたりできません)。

ズームに問題があり、マウスでズームを無効にすることができません。誰にもヒントがありますか?

map = new OpenLayers.Map('map');
map.events.remove("move");
map.events.remove("movestart");
map.events.remove("moveend");
map.events.remove("zoomend");
map.events.remove("mouseover");
map.events.remove("mouseout");
map.events.remove("mousemove");
map.events.remove("zoomstart");
var nav = new OpenLayers.Control.Navigation({
  defaultDblClick: function(event) { return ; }
});
map[index].addControl(nav);

また、すべてのナビゲーション イベントをそれよりも簡単に削除するためのヒントがあれば、大歓迎です。

4

6 に答える 6

16

空の配列を渡して、マップのデフォルト コントロールを無効にします。

var map = new OpenLayers.Map('map', { controls: [] });
于 2012-09-11T09:37:09.237 に答える
10

OpenLayers3 の場合、対話配列も空にする必要があります。

var map = new ol.Map({
  controls: [],
  interactions: []
});
于 2015-02-13T13:35:13.103 に答える
3

いくつかのロジックに基づいてズーム イベントを制限する別の簡単な方法を次に示します。OpenLayers は「beforezoom」を提供しないため

map.zoomToProxy = map.zoomTo;
map.zoomTo =  function (zoom,xy){
// if you want zoom to go through call
map.zoomToProxy(zoom,xy); 
//else do nothing and map wont zoom
};

仕組み:

あらゆる種類のズーム アクティビティに対して、OpenLayers API は最終的に zoomTo という関数を呼び出します。したがって、オーバーライドする前に、その関数を「zoomToProxy」という新しい関数にコピーします。これをオーバーライドして、条件付きズーム ロジックを追加します。ズームを実行したい場合は、新しいプロキシ関数を呼び出すだけです:)

于 2013-06-26T16:30:14.047 に答える