2012-03-27 20 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