Относительное максимальное и минимальное увеличение - Openlayers - PullRequest
1 голос
/ 16 января 2020

В настоящее время я работаю над проектом, целью которого является использование слоя изображения stati c для отображения данных в реальном времени. Мы продвинулись довольно далеко, и все работает очень хорошо. Одна из проблем, которые я заметил, заключается в том, что размер ImageLayer, показанный на карте, например, при минимальном увеличении, зависит от разрешения браузера. Я провел некоторое исследование документации Openlayers, но не могу найти точный способ обойти это. Также установите разрешение 1 в представлении при инициализации карты, но все еще есть некоторые разрешения браузера, которые не показывают всю карту при полном уменьшении масштаба.

Мы используем stati c ImageLayer, где проекция - это пользовательская система координат, которую мы используем на карте.

Есть ли способ обойти это? Так что minZoom и maxZoom относительно разрешения браузеров?

1 Ответ

1 голос
/ 17 января 2020

Как сказано на сайте OpenLayers:

Опция zoom - это удобный способ указать разрешение карты. Доступные уровни масштабирования определяются значениями maxZoom (по умолчанию: 28), zoomFactor (по умолчанию: 2) и max resolution (по умолчанию рассчитывается таким образом, что степень достоверности проекции вписывается в плитку размером 256x256 пикселей). Начиная с уровня масштабирования 0 с разрешением maxResolution единиц на пиксель, последующие уровни масштабирования рассчитываются путем деления разрешения предыдущего уровня масштабирования на zoomFactor до достижения уровня масштабирования maxZoom.

Таким образом, вы можете найти минимальное и максимальное разрешение или любое разрешение масштабирования с помощью view.getResolutionForZoom(zoom), когда масштаб находится в диапазоне 0-28. вам просто нужно настроить уровни масштабирования для ваших слоев и рассчитать разрешение при загрузке слоя и установить их свойства.

Но, как вы сказали, это может быть недостаточно точным. Существует также другой способ, в первую очередь, получить экстент слоя и подогнать карту к слою. есть метод для этого view.fit(geometryOrExtent, opt_options), вы можете найти больше информации здесь . затем установите текущее разрешение для maxResolution карты.
После этого вы можете убедиться, что весь слой будет виден.

Для улучшения бокса карты вы можете уменьшить число масштабирования экстента слоя на единицу или два. это делает слой лучше вписывается в карту.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...