0

我正在使用 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 中)对应于非洲,而不是预期的北美。

4

2 回答 2

1

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

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

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

于 2011-03-18T10:22:00.960 回答
0

如果您查看 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 = new OpenLayers.Map("mapBroken", {
projection : "EPSG:900913",
maxResolution:2319.89824519781,
units:'m' });

于 2011-03-16T17:45:15.913 回答