首先,抱歉我的英语,但不是我的母语。 我想问你是否知道为什么我的地图不起作用。我有两个带有geoserver的WMS和OSM与OpenLayers一起工作。三个地图正在显示,问题是当OSM处于“开启”状态时,其他2个位于后面并且未显示。这是我的代码。
function init(){
var map = new OpenLayers.Map({
div: "map",
projection: new OpenLayers.Projection("EPSG:900913"),
allOverlays: true,
});
//Geoserver WMS
var towns = new OpenLayers.Layer.WMS( "Towns",
"http://XXXX/geoserver/isle/wms", {layers: 'isleofwight:Towns', transparent: true}, {visibility: false},{isBaseLayer: false});
map.addLayer(towns);
var outline = new OpenLayers.Layer.WMS( "Outline",
"http://XXXX/geoserver/isle/wms", {layers: 'isleofwight:Outline', transparent: true}, {visibility: false},{isBaseLayer: false});
map.addLayer(outline);
var osm = new OpenLayers.Layer.OSM("Open Street Map");
map.addLayer(osm);
非常感谢
由于我无法回答同样的问题,我编辑说我找到了解决方案,以防有人需要它,问题是逐个插入图层,你必须同时添加所有图层时间。
map.addLayers([osm, towns, outline]);
现在工作得很完美:D
答案 0 :(得分:0)
对nmtoken和NorthLand的信用。
要一次显示多个来源,必须将它们分配给同一个图层并用逗号分隔(不允许使用空格或者它不会起作用):
params:{'LAYERS': 'Test:TestImagery,Test:Vector'},
一个工作的例子是:
var sUrl = 'https://ahocevar.com/geoserver/wms';
var oParam = JSON.parse({"LAYERS": "ne:NE1_HR_LC_SR_W_DR,topp:states", "TILED": true});
var wmsLayer = new TileLayer({
extent: [-13884991, 2870341, -7455066, 6338219],
source: new TileWms({
url: sUrl,
params: oParam,
serverType: "geoserver",
transition: 0
}),
isBaseLayer: true
});
this.map.addLayer(wmsLayer);
这将同时在同一层上渲染2个平铺图像。