Openlayers交换地图服务提供商

Openlayers交换地图服务提供商,openlayers,Openlayers,我发现了许多使用LayerSwitcher向Openlayers地图添加/删除覆盖的示例。我的目的是提供一个LayerSwitcher,它一次只允许一个地图服务提供商,例如GoogleMaps和Openstreetmaps。这在LayerSwitcher类中可能吗 我尝试了以下显示我想要的开关,但只有第一层可以可视化 var osmLayer = new OpenLayers.Layer.OSM("Open Street Maps",

我发现了许多使用LayerSwitcher向Openlayers地图添加/删除覆盖的示例。我的目的是提供一个LayerSwitcher,它一次只允许一个地图服务提供商,例如GoogleMaps和Openstreetmaps。这在LayerSwitcher类中可能吗

我尝试了以下显示我想要的开关,但只有第一层可以可视化

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地图


提前谢谢

我认为问题在于,您正试图使用Metacartas WMS I EPSG:900913项目,即OpenStreetMaps和Google使用的项目


尽管它在GetCapabilities中说它应该支持900913,但它看起来并没有。如果你试着在EPSG4326中使用WMS图层,你会发现它工作得很好。

我认为它可能与WMS图层有关,因为当我按如下方式添加Google地图:new OpenLayers.layer.GoogleGoogle地图,{visibility:true,isBaseLayer:true},它工作得很好!我对这种投影逻辑有点不知所措,但真的不可能同时使用这两种投影类型吗?我不能使用changelayer事件来设置正确的投影吗?