openlayers - wms - map not loading

openlayers - wms - map not loading

本文关键字:loading not wms openlayers map      更新时间:2023-09-26

我创建了一个简单的站点,其中包含一个连接到wms服务器的地图。现在的问题是,地图没有显示,只是查看小图片。这是我创建的网站:http://dl.dropbox.com/u/2418858/index.html

这是我一直在使用的代码:

<script type="text/javascript">
        var map;
        var wms;
        var map_controls = [new OpenLayers.Control.LayerSwitcher(),
                             new OpenLayers.Control.PanZoomBar(), 
                             new OpenLayers.Control.MouseToolbar(), 
                             new OpenLayers.Control.KeyboardDefaults()];
        function init() {
            map = new OpenLayers.Map("map", {
                controls : map_controls
            });
            wms = new OpenLayers.Layer.WMS("Satellitenbild_30m", "http://gis.lebensministerium.at/wmsgw/", {
                layers : 'Satellitenbild_30m',
                key : '6ae2a41178c77ccee1db7248c9f92b04',
            }, {
                projection : new OpenLayers.Projection('EPSG:32632'),
                singleTile : true,
                buffer : 0,
                ratio : 1
            });
            map.addLayer(wms);
            map.zoomToMaxExtent();
        }
    </script>
</head>
<body onload=init()>
    <div id="map" style="width: 1000px; height: 1000px"></div>
    </div>
</body>

当我使用Spatial commander(一个GIS桌面程序)时,我看到的是地图,可以放大和缩小,但当我使用Openlayers时,我看不到地图。

因此,我所做的是用代理拦截vom Spatial Commander的请求,看看这个请求与我从我的网站发送的请求有何不同。

我发现的唯一区别是BBOX参数,在SC中看起来像这样:

BBOX=495149.712089618,4954209.6147000715,1173065.9355847104,5633477.615310807

从我的网页发送的请求中的参数看起来像这样:

BBOX=-351.5625,-351.5625,351.5625,351.5625

所以我手动更改了通过我的网页发送的BBOX参数,得到了这个:手动请求原来是地图!

现在我的实际问题:

  • 为什么地图没有显示在我的网站上
  • 为什么Openlayers自动发送的BBOX参数与空间命令器发送的值相差如此之远
  • 我如何使我的地图工作

谢谢!

尝试在map对象上设置属性maxResolution

map = new OpenLayers.Map("map", {
    controls : map_controls,
    maxResolution: 1000
}); 

OpenLayers本身只处理几个投影(Web-Mercator和WGS84)。对于其他投影,您需要包含Proj4js库,该库位于-http://proj4js.org/

如果可用(即添加到您的网页),OpenLayers会自动与此库集成。

接下来为您的投影添加投影参数(在代码中使用之前)。在这种情况下,EPSG:32632

您几乎可以从http://spatialreference.org(当网站启动时)Proj4js格式:

Proj4js.defs["EPSG:32632"] = "+proj=utm +zone=32 +ellps=WGS84 +datum=WGS84 +units=m +no_defs";

http://spatialreference.org/ref/epsg/32632/proj4js/

然而,看看你的WMS服务的功能-它也可以在Web Mercator投影中请求-所以没有必要重新投影:

最后,你发送的演示链接显示了一张地图——至少在FireFox中是这样。你确定你没有JavaScript错误吗?这一行中多了一个逗号:

key : '6ae2a41178c77ccee1db7248c9f92b04',

这通常会导致Internet Explorer停止显示地图。

问题是您没有在OpenLayers映射对象上设置投影。在这种情况下,OpenLayers设置默认投影,即"EPSG:4326"。然后,您还可以设置maxExtent属性,以便OpenLayers知道它应该向哪个区域发送图像请求。在init方法中这样做:

map = new OpenLayers.Map("map", {
  controls : map_controls,
  projection: "EPSG:32632",
  maxExtent: new OepnLayers.Bounds(495149.712089618,4954209.6147000715,1173065.9355847104,5633477.615310807)                 
});