EPSG中的背景层:900913导致WMS覆盖失败

时间:2011-03-16 11:48:17

标签: openlayers wms

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

我在放大地图时没有显示叠加WMS图层时遇到问题。 问题似乎只发生在EPSG中使用背景WMS图层时:900913。 我在这里创建了一个演示页面:

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)对应非洲,而不是预期的北美。

2 个答案:

答案 0 :(得分:1)

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

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

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

答案 1 :(得分:0)

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

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

  

mapBroken = new   OpenLayers.Map(“mapBroken”,{
  投影:“EPSG:900913”,
  maxResolution:2319.89824519781,
  单位:'m'});