openlayers - 如何通过边界框居中映射

时间:2017-12-12 19:25:59

标签: maps openlayers openstreetmap openlayers-3 bounding-box

我正试图通过给定的边框来居中地图。在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
  })
});

1 个答案:

答案 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);