Javascript 打开图层3缩放贴图事件处理程序

Javascript 打开图层3缩放贴图事件处理程序,javascript,openlayers-3,Javascript,Openlayers 3,我需要处理开放层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('Z

我需要处理开放层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方法的类型字段尝试了“缩放”和“缩放”。

尝试使用
moveend
事件。(请参阅)。

为了补充这一点,您可以使用“propertychange”检查可用事件的变化,据我所见,在('zoom',…)上没有明确的
但是您可以访问“resolution”和前面评论中提到的其他属性:

map.getView().on('propertychange', function(e) {
   switch (e.key) {
      case 'resolution':
        console.log(e.oldValue);
        break;
   }
});

您可以管理moveend事件

我们需要一个全局变量来计算地图的视图缩放级别。我已经 将其命名为currentZoomLevel

有一个moveend事件可用。让我们使用它,并添加缩放级别 检查功能

如果有新的缩放级别,我们将触发zoomend事件 DOM的文档

最后,我们需要将zoomend listener添加到文档元素中

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
});

与之前一样,收听缩放变化(openlayers术语中称为分辨率变化)的方法是

map.getView().on('change:resolution', (event) => {
    console.log(event);
});
我发现这比听一般的
propertychange
并手动验证更改是否涉及解决方案要好(更简洁、更简练)

这在使用鼠标按钮时会快速触发,因此在启动任何等待其更改的计算之前,最好先对其进行限制


不幸的是,这并不能解决处理缩放事件的问题。我需要知道何时且仅在何时发生缩放(不是平移或旋转),以及缩放的方向。不过,我已经找到了一个变通解决方案,我将很快发布该解决方案,它不涉及“非稳定”事件,并且工作得非常完美。无论如何,还是要感谢您。
map.getView().on('change:resolution')
是否适合您的需要?它可以工作,但是
change:resolution
事件是最简单的方式吗?有人能确认吗?用evt替换zoomend_事件,并将其传递给zoomend事件函数以在自己的代码中使用