0

我在 OpenLayers 中遇到 WMS 覆盖问题。基本上我只想将来自 WMS 服务器的数据添加为覆盖层而不是基础层。这似乎是一个非常简单的问题,但我无法找到解决方案。如果我将singleTile设置为true,则覆盖显示在整个地图上,但您无法放大。如果设置为false,则每个缩放级别仅显示一个图块。如果我将它设置为基础层,它工作得很好,但我真的想要覆盖解决方案,所以我可以让它透明并看到它后面的地图。

问题的演示,使用不同的数据集,但问题是相同的:http: //jsfiddle.net/adbnC/2/

我认为这可能与某些坐标系问题有关,但我不是专家,因此不胜感激。

非常感谢!

以下是无法按预期工作的代码的相关部分:

var pop_layer = new OpenLayers.Layer.WMS("Population Density in 2000",
    "http://sedac.ciesin.columbia.edu/geoserver/ows", {
        layers: 'gpw-v3:gpw-v3-population-density_2000',
        transparent: true
     }, {
         opacity: 0.5,
         isBaseLayer: false,
         // Setting single tile to true will kind of work but than one
         // cannot zoom in any more.
         singleTile: false
     }
);
4

1 回答 1

3

我不太明白这里到底出了什么问题,但我认为这与混乱的参考系统有关。这是一种解决方法:

修改后的 Jsfiddle.net

我将地图投影更改为球形墨卡托,现在它似乎对我来说工作正常:

var mapOptions = {
    div: "map",
    projection: new OpenLayers.Projection("EPSG:900913"),
    units: "m"
};

map = new OpenLayers.Map('map', mapOptions);

var osm = new OpenLayers.Layer.OSM();
map.addLayer(osm);

var pop_layer = new OpenLayers.Layer.WMS("Population Density in 2000", "http://sedac.ciesin.columbia.edu/geoserver/ows", {
    layers: 'gpw-v3:gpw-v3-population-density_2000',
    transparent: true
}, {
    opacity: 0.5,
    isBaseLayer: false
});

map.addLayer(osm);
map.addLayer(pop_layer);
map.addControl(new OpenLayers.Control.LayerSwitcher());
map.setCenter(new OpenLayers.LonLat(0, 0), 2);​

让我知道这是否有帮助!

于 2012-11-09T18:20:06.457 回答