使用 Openlayers 3 和 Geoserver - 看不到内容

Working with Openlayers 3 and Geoserver - cannot see content

我正在尝试使用 Openlayers 3 显示两个图层,一个是格陵兰岛的地图,另一个是感兴趣的区域。两层都是平铺的。

它似乎在工作,但我得到的只是透明的图块,所以我以某种方式将视图放置在一个什么都没有的区域。我使用的是UTM 24 N投影(这是所涉及图层的原始投影,因此不需要转换)。

这是我的代码:

var utm24_projection = new ol.proj.Projection({
      code: 'EPSG:32624',
      extent: [-396882, 6394710, 1280839.6, 9750153.2], 
      units: 'm',
      axisOrientation: 'neu'
 });

 ol.proj.addProjection(utm24_projection);


 layer1 = new ol.layer.Tile({
      source: new ol.source.TileWMS({
        url: 'http://www.ourmapserver.gl/geoserver/wms',
        params: {'LAYERS': 'ourcompany:greenland', 'TILED': true},
        serverType: 'geoserver',
      })
    });

  layer2 =  new ol.layer.Tile({
      //extent: [-13884991, 2870341, -7455066, 6338219],
      source: new ol.source.TileWMS({
        url: 'http://www.ourmapserver.gl/geoserver/wms',
        params: {'LAYERS': 'ourcompany:interestarea', 'TILED': true},
        //projection = ol.proj.get('EPSG:32624');
        serverType: 'geoserver'
      })
    });

  var layers = [
    layer1,
    layer2
  ];
  var map = new ol.Map({
    layers: layers,
    target: 'map',
    view: new ol.View({
      projection: utm24_projection,
      center: [-48864, 7491452],
      zoom: 4
    })  
  });

使用 Web Mercator 时效果很好。

所以我找到了解决办法。

首先,我从投影中删除了范围:

  var utm24_projection = new ol.proj.Projection({
      code: 'EPSG:32624',
      units: 'm',
      axisOrientation: 'neu'
  });

然后在定义视图的时候,我只配置了投影,没有配置居中和缩放。

最后,我将视图调整为地图大小和边界:

map.getView().fit(bounds, map.getSize());

地图显示正确。