我找到了很多使用LayerSwitcher为Openlayers Map添加/删除Overlays的示例。我的目的是提供一个 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地图。
提前致谢!
答案 0 :(得分:0)
我认为问题在于您正在尝试使用Metacartas WMS i EPSG:900913投影(OpenStreetMaps和Google使用的投影)
虽然它在GetCapabilities中说它应该支持900913,但它看起来并非如此。如果您尝试单独使用WMS图层(在EPSG4326中),您会发现它的工作正常。