1

首先,对不起我的英语,但不是我的母语。我想问你是否知道为什么我的地图不起作用。我有两个带有地理服务器的 WMS 和与 OpenLayers 一起工作的 OSM。三张地图正在显示,问题是当 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

4

1 回答 1

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 个平铺图像。

于 2018-04-10T09:44:37.173 回答