我正试图通过给定的边框来居中地图。在OpenLayers FAQ上甚至是一个例子(使用swissProjection),但它只是不起作用。在一些论坛中环顾四周,却无法弄清楚如何使其发挥作用。
也许有人知道。
以下是代码:
var extent = [-9022321.0707,3022167.2243,-8849726.2608,3148441.1951];
var projection = new ol.proj.Projection({
code: 'EPSG:3857',
extent: extent,
units: 'm'
});
ol.proj.addProjection(projection);
var map = new ol.Map({
layers: [
new ol.layer.Tile({
source: new ol.source.OSM()
})
],
target: 'map',
view: new ol.View({
projection: projection,
center: [0,0],
zoom: 0
})
});
答案 0 :(得分:1)
您的代码是正确的,但中心超出了您的范围。有两种方法可以解决它。
首先,设置有效的视图中心和级别。
e.g。)
view: new ol.View({
projection: projection,
center: [-8936023.66575, 3085304.2097], // guess it's the center of extent
zoom: 8 // whatever you want.
})
其次,使用View.fit
而不是extent
上设置Projection
。
var projection = new ol.proj.Projection({
code: 'EPSG:3857',
//extent: extent,
units: 'm'
});
...
map.getView().fit(extent);