В OpenLayers увеличьте масштаб всех оверлеев

10

В Openlayers я могу увеличить масштаб всех слоев следующим образом:

map.zoomToExtent();

Я также могу увеличить масштаб ограничительной рамки одного слоя:

map.zoomToExtent(layer_name.getDataExtent());

Есть ли простой способ масштабирования до уровня всех слоев, кроме базового? Другими словами, показывает степень всех оверлеев.

Mr_Chimp
источник

Ответы:

6
  1. цикл по всем вашим слоям
    1. Пропустите базовый слой [согласно вашему требованию]
    2. Используйте bounds.extend (...) для создания API всеобъемлющего объекта bounds
  2. Приблизьтесь к полученному API границ
Вадим
источник
Я думаю, что это не сработает, так как extends () работает, только если он вызывается с меньшими границами, чем тот, который передается в качестве аргумента.
Пакман
Как я
могу
@imdadhusen почему бы тебе просто не посмотреть документацию? тот же метод. тот же объект. другое пространство имен. openlayers.org/en/v3.3.0/apidoc/ol.extent.html#extend
Вадим
1

как насчет исправления map.restrictedExtent и вызова map.zoomToExtent (map.restrictedExtent) ?

Симо
источник
Это просто переместило бы проблему ... Как бы я нашел ограничивающую рамку оверлеев, чтобы создать limitedExtent?
Mr_Chimp
Вы пробовали с ZoomToMaxExtent () - но это, вероятно, увеличит экстент базового слоя, если больше? если это не сработает, вы должны получить экстент для каждого слоя оверлеев и оставить самый большой для исправления limitedExtent.
Симо
Я попытался ZoomToMaxExtend (), и он увеличивает базовый слой. Я упоминал об этом в своем вопросе, но при перечитывании это не очевидно. Сохранение самого большого ограничивающего прямоугольника не обязательно сработает, т. Е. Если два слоя не перекрываются. Я думаю, мне придется как-то объединить ограничивающие рамки каждого слоя, а затем получить ограничивающие рамки полученного объекта ...
Mr_Chimp
Это оно! Что не так сложно ... Но я согласен с вами, удивительно, что такого метода еще не существует (или мы что-то упустили ;-) ..)
simo
Ну, надеюсь, мы что-то упустили! Я оставлю вопрос открытым пока ... на всякий случай!
Mr_Chimp