Open Layers 3 Обработчик события Zoom map

Мне нужно обработать событие масштабирования в 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.

Ответ 1

попробуйте с событием moveend. (см. http://openlayers.org/en/master/apidoc/ol.Map.html, и не забудьте снять "стабильную только" в верхней панели, чтобы увидеть его).

Ответ 2

Чтобы добавить к этому, вы можете проверить варианты событий, доступных с помощью "propertychange", из того, что я вижу, нет явного .on ('zoom', ...), но вы можете получить доступ к "разрешению" и другим свойствам, как указано в предыдущих комментариях

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

Ответ 3

Вы можете управлять событием moveend...

Нам понадобится глобальная переменная, чтобы отобразить масштаб изображения. Ive назвал его currentZoomLevel.

Имеется событие moveend. Позволяет использовать его и добавить уровень масштабирования проверьте функцию.

В случае нового уровня масштабирования мы запускаем событие масштабирования для Документ DOM.

Наконец, нам нужно будет добавить обработчик масштаба для элемента документа.

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

Источник