0

OpenLayers を使用して Web サイトを開発しており、さまざまな WMS ソースを背景マップの上に配置する必要があります。

マップを拡大すると、オーバーレイ WMS レイヤーが表示されないという問題があります。この問題は、EPSG:900913 でバックグラウンド WMS レイヤーを使用している場合にのみ発生するようです。ここで利用可能なデモンストレーションページを作成しました:

http://andarki.dk/Stackoverflow/OpenLayers/WMS.html

背景マップを除いて、両方のマップは同一です。左のマップは EPSG:4326 の背景マップを使用しており、右の背景マップは EPSG:900913 を使用しています。ズームインすると、Nexrad レイヤーが左側のマップにのみ表示されたままになっていることがわかります。

2 番目のマップの Nexrad サーバーに送信される 2 つの要求を見ると、BBOX が間違っています。

Request1: BBOX=-5009557.0848,-90.000000001863,-179.99999999814,5009287.0848

Request2: BBOX=-179.99999999814,-90.000000001863,5009197.0848,5009287.0848

これらの座標 (EPSG:900913 内) は、予想どおり北アメリカではなく、アフリカに対応しています。

4

2 に答える 2

1

この問題は、マップに maxExtent を設定していないことが原因でした。次のコードで機能します。

mapWorking900913 = new OpenLayers.Map
(
    "mapWorking900913",
    {
        maxExtent: new OpenLayers.Bounds(-20037508, -20037508, 20037508, 20037508)
    }
);

maxExtent で使用される座標は、背景マップと同じ srs にある必要があります。さらにバックグラウンド マップが必要な場合は、すべて同じ srs にある必要があります。

于 2011-03-18T10:22:00.960 に答える
0

WMS サービスの Capabilites ドキュメント (http://mesonet.agron.iastate.edu/cgi-bin/wms/nexrad/n0r-t.cgi?SERVICE=WMS&VERSION=1.1.1&REQUEST=GetCapabilities) を見ると、実際に 4326 と 900913 の両方をサポートしていることがわかります。

OpenStreetMaps を使用する地図に投影法を明示的に設定しようとします。

mapBroken = new OpenLayers.Map("mapBroken", {
プロジェクション : "EPSG:900913",
maxResolution:2319.89824519781,
units:'m' });

于 2011-03-16T17:45:15.913 に答える