openlayers - wms - 地图未加载

时间:2012-01-27 17:27:45

标签: javascript geospatial openlayers wms

我创建了一个带有地图的简单网站,我正在连接到wms-server。 现在的问题是,地图没有显示,只是一个小图片的视图。这是我创建的网站: 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时,我看不到地图。

所以我所做的就是通过代理拦截空间指挥官的请求,看看这个请求与我的网站发送的请求有什么不同。

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

BBOX=495149.712089618,4954209.6147000715,1173065.9355847104,5633477.615310807

并且从我的网页发送的请求中的参数如下所示:

BBOX=-351.5625,-351.5625,351.5625,351.5625

所以我手动更改了通过我的网页发送的BBOX参数并得到了这个: manual request所以有地图!

现在我的实际问题:

  • 为什么我的网站上没有显示地图?
  • 为什么从Openlayers自动发送的BBOX参数远离空间指挥官发送的值?
  • 如何让我的地图有效?

谢谢!

3 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分:1)

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

中包含Proj4js库

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

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

您可以使用Proj4js格式从http://spatialreference.org(当网站启动时)获取几乎所有投影详细信息:

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

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

然而,考虑your WMS service的功能 - 可以在Web Mercator投影中请求它 - 因此不需要重新投影:

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

key : '6ae2a41178c77ccee1db7248c9f92b04',

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

答案 2 :(得分:0)

问题是您没有在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)                 
});