0

当我为 mapview 提供 leftbottom 和 righttop 坐标时,这些并没有完全使用。由此产生的差异非常大。我错过了什么?!

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]

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

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

4

1 回答 1

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});
于 2018-12-05T16:54:02.073 回答