Открытых слоев 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('Zooming...');
});

Этот код работает без ошибок и показывает карту, но нет вывода на консоль, предполагая, что эта функция не запускается.

Я тоже пробовал:

map_object.on("drag", function() {
  console.log('Dragging...');
});

И это тоже ничего не дает.

Любая помощь в том, как обрабатывать события управления картой в OL3, была бы очень признательна (особенно масштабирование!). Обратите внимание, что я пробовал "увеличить", а также "увеличить" для поля типа по методам.

3 14

3 ответа:

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

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

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

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

Нам понадобится глобальная переменная для выделения уровня масштабирования вида карты. Я назвал его currentZoomLevel.

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

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

Наконец, нам нужно будет добавить 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
});

Источник