OL Mapview: при условии, что границы не используются ........ почему? - PullRequest
0 голосов
/ 05 декабря 2018

Когда я предоставляю левую и правую координаты для обзора карты, они не используются точно.Итоговая разница довольно большая.Чего мне не хватает ?!

Bounds = [-0.6688232421875, 49.78322566351028, 11.6688232421875, 54.35032343193191];
Bounds = ol.proj.transformExtent(Bounds, ol.proj.get('EPSG:4326'), ol.proj.get('EPSG:3857'));


var map = new ol.Map({
    target: 'map',
    view: new ol.View({
        projection: "EPSG:3857"
        })
    });

map.getView().fit(Bounds,map.getSize());

Вид карты получает новые («большие») границы, но не указанные выше.«Новые» границы: [-6.837646484374999,47.32226629045806,17.837646484375,56.461134011735425]

Как мне заставить карту придерживаться предоставленных ??

ПРАВКА: Я настроил код на основена комментарии от Майка (спасибо !!).** Каков наилучший способ добиться того, чего я хочу ...... т.е. отобразить часть карты, которая находится внутри ограничительной рамки, с указанными выше координатами слева внизу и справа (LON / LAT)?**

1 Ответ

0 голосов
/ 05 декабря 2018

Границы используются, но если вы не укажете constrainResolution: false, представление будет привязано к ближайшему целочисленному уровню масштабирования.Этот код демонстрирует получение точного соответствия, допуская дробный уровень масштабирования.Обратите внимание, что если соотношение ширины / высоты карты не совпадает с экстентом, будет некоторое избыточное покрытие

Bounds = [-0.6688232421875, 49.78322566351028, 11.6688232421875, 54.35032343193191];
Bounds = ol.proj.transformExtent(Bounds, ol.proj.get('EPSG:4326'), ol.proj.get('EPSG:3857'));

var map = new ol.Map({
    target: 'map',
    layers: [
        new ol.layer.Tile({
            source: new ol.source.OSM()
        }),
        new ol.layer.Vector({
            source: new ol.source.Vector({
                features: [new ol.Feature(ol.geom.Polygon.fromExtent(Bounds))]
            })
        })
    ]
});
map.getView().fit(Bounds, {size: map.getSize(), constrainResolution: false});
...