Линия масштабирования карты Openlayers с одинаковым коэффициентом масштабирования, повторяемым дважды в метрике, хотя масштаб отличается - PullRequest
0 голосов
/ 23 мая 2019

Линия масштабирования Openlayers Map в метрической единице имеет определенную частоту зуммирования, повторяемую дважды при зуммировании, хотя фактическое разрешение при увеличении отличается на карте.

https://openlayers.org/en/latest/examples/scale-line.html Как вы можете видеть по ссылке, скорости увеличения 5 км и 5 м повторяются дважды для двух разных уровней увеличения

Как я объявил свои коэффициенты увеличения в поле зрения.

var viewLayer = new ol.View({
            center: [0, 0],
            zoom: 10,
            minZoom: 15,
            maxZoom: 24,
            resolution: 0.2,
            minResolution: 0.0125,
            maxResolution: 6.4
        });

Декларация управления линией шкалы как

var scaleLineControl = new ol.control.ScaleLine({
            minWidth: 100,
            units: 'metric'
        });

При вышеуказанном объявлении в диапазоне от 1000 м до 1 м - 5 м повторяется дважды в метрической единице

Ответы [ 2 ]

1 голос
/ 23 мая 2019

Чтобы избежать дублирования, вы должны использовать массив разрешения для соответствия интервалам линии шкалы

Интервалы линии шкалы фиксируются следующим образом:

5000, 2000, 1000, 500, 200, 100, 50, 20, 10, 5, 2, 1

Если вы не используете массив разрешенияOpenLayers фиксирует rsolutions на четных интервалах между минимальным и максимальным, например,

4096, 2048, 1024, 512, 256, 128, 64, 32, 16, 8, 4, 2, 1

, поэтому (в этом случае) у вас будет два разрешения, которые соответствуют от 2000 до 5000 на линии шкалы

0 голосов
/ 23 мая 2019

Вы можете задать массив разрешений для вашего представления . Обратите внимание, что, как сказано в документации:

Если установить maxResolution, minResolution, minZoom, maxZoom и параметры zoomFactor игнорируются

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

На самом деле это предназначено для работы в целях удобочитаемости. Значения одинаковы, но ширина линии шкалы не такая, так что это не проблема, верно?

Также сочетание между разрешениями, передаваемыми в представление и minWidth для масштабной шкалы, должно делать свою работу, но опять же, это будут просто домашние хаки, в OpenLayers-5 нет таких параметров, чтобы достичь именно того, чего вы хотите делай!

...