我创建了一个带有地图的简单网站,我正在连接到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所以有地图!
现在我的实际问题:
谢谢!
答案 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)
});