Open Layers 3でズームイベントを処理する必要があります。
以下は私のコードです:
map_object = new ol.Map({
target: 'map',
controls: controls_list,
interactions: interactions_list,
overlays: [overlay],
layers: [OSM_raster, WFS_layer],
view: view
});
map_object.on("Zoom", function() {
console.log('Zooming...');
});
このコードはエラーなしで実行され、マップを表示しますが、コンソールへの出力はありません。この関数が起動していないことを示唆しています。
私も試しました:
map_object.on("drag", function() {
console.log('Dragging...');
});
そして、これも何もしません。
OL3でのマップコントロールイベントの処理方法に関するヘルプは大歓迎です(特にズーム!)。注:onメソッドのtypeフィールドに 'zoom'と 'Zoom'を試しました。
moveend
イベントで試してください。 ( https://openlayers.org/en/latest/apidoc/module-ol_MapEvent-MapEvent.html#event:moveend を参照)。
これに追加するだけで、「propertychange」で利用可能なイベントのバリエーションを確認できます。私が見ているものから、明示的な.on ('zoom', ...)
はありませんが、前に述べたように「解像度」および他のプロパティにアクセスできますコメント:
map.getView().on('propertychange', function(e) {
switch (e.key) {
case 'resolution':
console.log(e.oldValue);
break;
}
});
Moveendイベントを管理できます...
マップの表示ズームレベルを割り当てるには、グローバル変数が必要です。 currentZoomLevelという名前を付けました。
Moveendイベントが利用可能です。それを使って、ズームレベルチェック機能を追加しましょう。
新しいズームレベルがある場合、DOMのドキュメントに対してzoomendイベントをトリガーします。
最後に、zoomendリスナーをドキュメント要素に追加する必要があります。
var = currentZoomLevel; map.on('moveend', checknewzoom); function checknewzoom(evt) { var newZoomLevel = map.getView().getZoom(); if (newZoomLevel != currentZoomLevel) { currentZoomLevel = newZoomLevel; $(document).trigger("zoomend", zoomend_event); } } $(document).on('zoomend', function () { console.log("Zoom"); //Your code here });