【问题标题】:Background Layer in EPSG:900913 causes WMS overlays to failEPSG 中的背景层:900913 导致 WMS 覆盖失败
【发布时间】:2011-03-18 18:30:31
【问题描述】:

我正在使用 OpenLayers 开发一个网站,需要将各种 WMS 源放在背景地图上。

我遇到了一个问题,即在放大地图时未显示覆盖 WMS 图层。 该问题似乎仅在 EPSG:900913 中使用背景 WMS 图层时出现。 我在这里创建了一个演示页面:

http://andarki.dk/Stackoverflow/OpenLayers/WMS.html

除了背景图之外,两张地图都是相同的。 左图使用 EPSG:4326 中的背景图,而右图使用 EPSG:900913。 如果放大,您会注意到 Nexrad 图层仅在左侧地图中可见。

如果您查看发送到第二张地图的 Nexrad 服务器的两个请求,BBOX 是错误的:

请求1:BBOX=-5009557.0848,-90.000000001863,-179.99999999814,5009287.0848

请求2:BBOX=-179.99999999814,-90.000000001863,5009197.0848,5009287.0848

这些坐标(在 EPSG:900913 中)对应于非洲,而不是预期的北美。

【问题讨论】:

    标签: openlayers wms


    【解决方案1】:

    问题是由于没有在地图上设置 maxExtent 引起的。以下代码使其工作:

    mapWorking900913 = new OpenLayers.Map
    (
        "mapWorking900913",
        {
            maxExtent: new OpenLayers.Bounds(-20037508, -20037508, 20037508, 20037508)
        }
    );
    

    maxExtent 中使用的坐标必须与背景图在同一个 srs 中。 如果需要更多背景图,则必须都在同一个 srs 中。

    【讨论】:

      【解决方案2】:

      如果您查看 WMS 的 Capabilites 文档(http://mesonet.agron.iastate.edu/cgi-bin/wms/nexrad/n0r-t.cgi?SERVICE=WMS&VERSION=1.1.1&REQUEST=GetCapabilities)服务,您会看到它实际上支持 4326 和 900913。

      我会尝试在使用 OpenStreetMaps 的地图上明确设置投影:

      mapBroken = 新的 OpenLayers.Map("mapBroken", {
      投影:“EPSG:900913”,
      最大分辨率:2319.89824519781,
      单位:'m' });

      【讨论】:

      • 嗨,igorti,这似乎没有什么不同。我已经根据您的建议添加了第三张地图,但问题仍然存在。似乎从 OpenLayers 发送到 Nexrad 的 BBOX 是错误的,我已经编辑了我的原始问题以包含此信息。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多