2012-03-27 57 views
0

我發現了很多的例子來說明如何添加/使用LayerSwitcher除去疊加到自己的OpenLayers地圖。我的目的是提供一種LayerSwitcher只允許一個地圖服務提供商(例如Google地圖和開放街道地圖)一次。 LayerSwitcher類有可能嗎?的OpenLayers切換地圖服務提供商

我想這說明我想有開關以下,但只有第一層可以可視化!

var osmLayer = new OpenLayers.Layer.OSM("Open Street Maps", 
             ["http://a.tile.openstreetmap.org/${z}/${x}/${y}.png", 
             "http://b.tile.openstreetmap.org/${z}/${x}/${y}.png", 
             "http://c.tile.openstreetmap.org/${z}/${x}/${y}.png" 
             ], 
             {visibility: true, isBaseLayer: true}); 
var wmsLayer = new OpenLayers.Layer.WMS("OpenLayers WMS", 
             "http://vmap0.tiles.osgeo.org/wms/vmap0", 
             {layers: 'basic'}, 
             {visibility: true, isBaseLayer: true}); 

this.map = new OpenLayers.Map({ 
         div: divname, 
         allOverlays: false, 
         theme: null, 
         controls: [ 
          new OpenLayers.Control.LayerSwitcher(), 
         ] 
}); 
this.map.addLayers([osmLayer, wmsLayer]); 
this.map.setCenter(
    new OpenLayers.LonLat(8.56, 50).transform(
      new OpenLayers.Projection("EPSG:4326"), 
      this.map.getProjectionObject() 
    ), 10 
); 

如果我選擇第二個條目,則地圖上不會顯示任何內容,選擇第一個條目後再次顯示OSM地圖。

在此先感謝!

+0

我想可能有事情做與WMS層,因爲當我加入谷歌地圖如下:新OpenLayers.Layer.Google(「谷歌地圖」,{可見性:真實,isBaseLayer:真}),它的工作原理! – janr 2012-03-27 08:12:58

回答

0

我認爲問題是,你要使用Metacartas WMS我EPSG:900913投影(即開放街道地圖和谷歌使用的)

雖然說,在獲得性能,它應該支持900913,它看起來像它沒有。如果你嘗試單獨使用WMS圖層(在EPSG4326中),你會發現它工作得很好。

+0

我有點不知所措這個投影的邏輯,但真的沒有可能使用這兩種投影類型?我不能使用_changelayer_事件來設置正確的投影嗎? – janr 2012-04-04 08:33:45