2011-03-16 103 views
0

我正在開發一個使用OpenLayers的網站,並且需要將各種WMS源放在背景地圖的頂部。EPSG中的背景層:900913導致WMS重疊失敗

我在放大地圖時遇到覆蓋WMS圖層沒有顯示的問題。 這個問題似乎只發生在使用EPSG中的背景WMS層:900913。 我創建可在這裏演示頁:

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

兩個圖是相同的,除了背景圖。 左側地圖在EPSG中使用背景地圖:4326,右側背景地圖使用的是EPSG:900913。 如果放大,您會注意到Nexrad圖層僅在左側地圖上保持可見。

如果你看一下兩個請求被髮送到服務器NEXRAD爲第二圖,BBOX是錯誤的:

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

請求2 :BBOX = -179.99999999814,-90.000000001863,5009197.0848,5009287.0848

這些座標(在EPSG中:900913)對應於非洲,而不是預期的北美洲。

回答

1

該問題是由於未在地圖上設置maxExtent而導致的。以下代碼使其工作:

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

maxExtent中使用的座標必須與背景地圖具有相同的srs。 如果需要更多背景地圖,則必須全部使用相同的srs。

0

如果你看一看Capabilites文件(http://mesonet.agron.iastate.edu/cgi-bin/wms/nexrad/n0r-t.cgi?SERVICE=WMS & VERSION = 1.1.1 & REQUEST =獲得性能)WMS服務的,你會看到,它實際上同時支持4326和900913.

我會嘗試使用開放街道地圖在地圖上明確地設置投影:

mapBroken =新 OpenLayers.Map( 「mapBroken」,{
projection:「EPSG:900913」,
maxResolution:2319.89824519781,
units:'m'});

+0

嗨igorti,它似乎沒有區別。我在你的建議中添加了第三張地圖,但問題仍然存在。看來從OpenLayers發送到Nexrad的BBOX是錯誤的,我編輯了我的原始問題以包含此信息。 – 2011-03-17 07:39:41