【问题标题】:Show WMS with OSM使用 OSM 显示 WMS
【发布时间】:2018-04-10 17:44:37
【问题描述】:

首先,对不起我的英语不是我的母语。 我想问你是否知道为什么我的地图不起作用。我有两个带有地理服务器的 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

【问题讨论】:

  • 其实你可以回答你自己的问题。
  • 我做不到,因为我试图在 8 小时之前做,但我没有足够的票数来做。

标签: openlayers openstreetmap wms


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-17
    • 1970-01-01
    • 2023-04-06
    相关资源
    最近更新 更多