Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/466.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript openlayers-wms-地图未加载_Javascript_Geospatial_Openlayers_Wms - Fatal编程技术网

Javascript openlayers-wms-地图未加载

Javascript openlayers-wms-地图未加载,javascript,geospatial,openlayers,wms,Javascript,Geospatial,Openlayers,Wms,我创建了一个简单的站点,其中有一个连接到wms服务器的地图。 现在的问题是,地图没有显示,只是一个小图片的视图。以下是我创建的网站: 以下是我一直在使用的代码: <script type="text/javascript"> var map; var wms; var map_controls = [new OpenLayers.Control.LayerSwitcher(),

我创建了一个简单的站点,其中有一个连接到wms服务器的地图。 现在的问题是,地图没有显示,只是一个小图片的视图。以下是我创建的网站:

以下是我一直在使用的代码:

<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>
从我的网页发送的请求中的参数如下所示:

BBOX=495149.712089618,4954209.6147000715,1173065.9355847104,5633477.615310807
BBOX=-351.5625,-351.5625,351.5625,351.5625
因此,我手动更改了通过我的网页发送的BBOX参数,并得到以下结果: 原来是地图

现在我的实际问题是:

  • 为什么地图没有显示在我的网站上
  • 为什么Openlayers自动发送的BBOX参数与spatial commander发送的值相差如此之远
  • 我怎样才能使我的地图工作

谢谢

OpenLayers本身只处理几个投影(Web Mercator和WGS84)。对于其他投影,您需要包括Proj4js库,该库位于-

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

接下来为投影添加投影参数(在代码中使用之前)。在本例中,EPSG:32632

您几乎可以通过Proj4js格式从(站点启动时)获取所有投影详细信息:

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

但是,从功能上看,也可以在Web Mercator投影中请求,因此无需重新投影:

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

key : '6ae2a41178c77ccee1db7248c9f92b04',
这通常会导致Internet Explorer停止显示地图

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

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

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

它不起作用的唯一原因是,您使用的投影中没有请求BBOX。我真的不知道如何修复它。可能与在地图初始化中声明maxExtent有关。非常感谢您的提示,因为现在我至少能够查看地图,尽管缩放级别相差很远,我无法确定正确的maxExtent。。。[链接]非常感谢!我现在已经包括了Proj4js,并且为epsg做了定义:32632,但是现在我看到我的站点发送了一个对EPSG31287.js的请求,我不知道它的定义,因为spatialreference.org已经关闭了…当它们再次打开时,我会看一看…所以我已经在我的站点中包括了Proj4j,但遗憾的是它没有改变任何东西。同样的问题:地图正在显示,但在某种程度上缩放因子太高,我无法更改它,因为这样地图就不再显示了……firebug没有显示任何脚本错误,但我已经修复了逗号。问题是,当我将投影更改为其他内容时,地图不会显示…谢谢!这就成功了!地图现在正在显示,就像建议的那样。我现在只需要弄清楚如何转换gps坐标。。。再次感谢你!谢谢我的问题是没有设置maxResolution。