OL Mapview:未使用提供的边界.....为什么?

时间:2018-12-05 09:35:06

标签: openlayers openlayers-5

当我提供mapview的左下角和右上角坐标时,这些坐标未完全使用。结果差异很大。我想念什么?!

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());

mapview获得新的(“更大”)边界,但没有以上边界。 “新”界限是[-6.837646484374999,47.32226629045806,17.837646484375,56.461134011735425]

我怎样才能使地图坚持所提供的地图?

编辑:我已经根据Mike(thx !!)的评论调整了代码。 **实现我想要的最好的方法是什么...即是否显示地图框内具有上述左下和右上(LON / LAT)坐标的边界框? **

1 个答案:

答案 0 :(得分:1)

正在使用边界,但是除非您指定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});