0

OpenLayers の WMS オーバーレイに問題があります。基本的に、WMS サーバーからデータをベース レイヤーではなくオーバーレイとして追加したいだけです。これは非常に単純な問題のようですが、解決策が見つかりません。singleTiletrueに設定すると、オーバーレイがマップ全体に表示されますが、ズームインできません。falseに設定すると、すべてのズーム レベルで 1 つのタイルのみが表示されます。ベースレイヤーとして設定すると問題なく動作しますが、オーバーレイソリューションが本当に必要なので、透明にしてその背後の地図を見ることができます.

別のデータセットを使用した問題のデモンストレーションですが、問題は同じです: 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 に答える