2012-01-27 215 views
2

我創建了一個簡單的網站,其中包含我要連接到wms服務器的地圖。 現在的問題是,地圖不顯示,只是一個視圖小圖片。這裏是我所創建的網站: http://dl.dropbox.com/u/2418858/index.htmlopenlayers - wms - 無法加載地圖

這是我一直在使用的代碼:

<script type="text/javascript"> 
     var map; 
     var wms; 
     var map_controls = [new OpenLayers.Control.LayerSwitcher(), 
          new OpenLayers.Control.PanZoomBar(), 
          new OpenLayers.Control.MouseToolbar(), 
          new OpenLayers.Control.KeyboardDefaults()]; 

     function init() { 
      map = new OpenLayers.Map("map", { 
       controls : map_controls 
      }); 
      wms = new OpenLayers.Layer.WMS("Satellitenbild_30m", "http://gis.lebensministerium.at/wmsgw/", { 
       layers : 'Satellitenbild_30m', 
       key : '6ae2a41178c77ccee1db7248c9f92b04', 
      }, { 
       projection : new OpenLayers.Projection('EPSG:32632'), 
       singleTile : true, 
       buffer : 0, 
       ratio : 1 
      }); 

      map.addLayer(wms); 

      map.zoomToMaxExtent(); 

     } 
    </script> 
</head> 
<body onload=init()> 
    <div id="map" style="width: 1000px; height: 1000px"></div> 
    </div> 
</body> 

當我使用空間司令(地理信息系統桌面程序),我看到地圖並可以放大和縮小,但是當我使用Openlayers時,我看不到地圖。

所以我所做的是用代理攔截請求vom Spatial Commander,看看這個請求與我的網站發送的請求有什麼不同。

我發現的唯一區別是這SC看上去像這樣的BBOX參數:

BBOX=495149.712089618,4954209.6147000715,1173065.9355847104,5633477.615310807 

,並從我的網頁發送的請求參數是這樣的:

BBOX=-351.5625,-351.5625,351.5625,351.5625 

所以我通過手動更改了通過我的網頁發送的BBOX參數並得到: manual request所以有地圖!

現在我實際的問題:

  • 爲什麼is'nt在地圖上顯示我的網站?
  • 爲什麼從Openlayers自動發送的BBOX參數遠離空間指揮官發送的值?
  • 如何讓我的地圖工作?

謝謝!

+0

它不工作的唯一原因是因爲BBOX未在您使用的投影中被請求。我不確定如何解決它。可能與在地圖初始化中聲明maxExtent有關。 – 2012-01-27 19:45:35

+0

非常感謝您的提示,因爲現在我至少能夠查看地圖,儘管縮放級別已關閉,我無法弄清楚正確的maxExtent ... [link] http:// dl.dropbox.com/u/2418858/index1.html – user1173933 2012-01-28 14:30:37

回答

2

嘗試設置財產maxResolutionmap對象:

map = new OpenLayers.Map("map", { 
    controls : map_controls, 
    maxResolution: 1000 
}); 
+0

謝謝!這個伎倆!地圖現在顯示的就像它的建議。我現在只需要弄清楚如何轉換gps座標...再次感謝您! – user1173933 2012-01-30 12:17:53

1

OpenLayers只處理一些投影(Web墨卡託和WGS84)本身。對於其他預測,您需要包含Proj4js庫,網址爲:http://proj4js.org/

如果OpenLayers可用(即添加到您的網頁中),它將自動與此庫集成。

接下來爲投影添加投影參數(在代碼中使用它之前)。在這種情況下EPSG:32632

您可以從http://spatialreference.org得到幾乎所有的投影細節(當該網站是向上)在Proj4js格式:

Proj4js.defs["EPSG:32632"] = "+proj=utm +zone=32 +ellps=WGS84 +datum=WGS84 +units=m +no_defs"; 

http://spatialreference.org/ref/epsg/32632/proj4js/

然而望着your WMS service能力 - 也可以在Web墨卡託投影中請求 - 因此不需要重新投影:

最後,您發送的演示鏈接正在顯示地圖 - 至少在FireFox中。你確定你沒有JavaScript錯誤嗎?您在此行中有一個額外的逗號:

key : '6ae2a41178c77ccee1db7248c9f92b04', 

這經常會導致Internet Explorer停止顯示地圖。

+0

非常感謝!我現在已經包含了Proj4js,並且還制定了epsg:32632的定義,但是現在我已經看到,我的站點發送了EPSG31287.js的請求,我不知道它的定義,因爲spatialreference.org已關閉。當他們再次起來時,我們會看一看...... – user1173933 2012-01-28 14:31:52

+0

所以我在我的網站中加入了Proj4j,但是可悲的是它並沒有改變任何東西。同樣的問題:地圖顯示,但方式太高的變焦因素,我不能改變它,因爲然後地圖不再顯示... – user1173933 2012-01-29 18:47:43

+0

螢火蟲沒有顯示任何腳本錯誤,但我已經修復了逗號。問題是,當我更改投影到其他任何東西時,地圖不會顯示... – user1173933 2012-01-30 10:55:09

0

的問題是,你沒有設置投影上的OpenLayers地圖對象。在這種情況下,OpenLayers設置「EPSG:4326」的默認投影。然後,您還可以設置maxExtent屬性,以便OpenLayers知道應該向哪個區域發送圖像請求。在初始化方法中,請執行以下操作:

map = new OpenLayers.Map("map", { 
    controls : map_controls, 
    projection: "EPSG:32632", 
    maxExtent: new OepnLayers.Bounds(495149.712089618,4954209.6147000715,1173065.9355847104,5633477.615310807)     
}); 
+0

謝謝!在我的情況下,問題是maxResolution沒有設置。 – user1173933 2012-01-30 12:27:11