当我提供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)坐标的边界框? **
答案 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});