Открытых слоев 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 ответа:
Попробуйте использовать событие
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 });