我需要在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中的地图控制事件的帮助将非常受欢迎(特别是缩放!)。注意我已尝试'zoom'以及'zoom'作为on方法的type字段。
只是为了补充一点,你可以检查'propertychange'可用事件的变化,从我所看到的,没有明确的.on ('zoom', ...)
,而是你可以访问'resolution'和其他属性,如前面的评论所述:
map.getView().on('propertychange', function(e) {
switch (e.key) {
case 'resolution':
console.log(e.oldValue);
break;
}
});
你可以管理moveend事件......
我们需要一个全局变量来分配地图的视图缩放级别。我把它命名为currentZoomLevel。
有一个moveend事件。让我们使用它,并添加缩放级别检查功能..
如果有新的缩放级别,我们会触发一个zoomend事件到DOM的文档。
最后,我们需要将zoomend侦听器添加到document元素中。
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 });