3

我正在尝试从已发布的 ArcGIS Map Service 中显示 WMS 图层,而我得到的只是粉红色的瓷砖。谁能帮我纠正我的代码有什么问题?当我平移到美国时,我得到的只是“破碎的图像粉红色瓷砖”......没有任何 WMS 图层出现。

<html>
<head>
    <title>Karta</title>
    <link rel="stylesheet" href="openlayers/theme/default/style.css" type="text/css">
<script src="http://openlayers.org/api/OpenLayers.js"></script>
<script  type="text/javascript">
    function inicializacija(){
        var options = {
            projection: new OpenLayers.Projection("EPSG:4326"),
            units: "m",
            numZoomLevels: 18,
            maxResolution: 156543.0339,
            maxExtent: new OpenLayers.Bounds(-20037508.34,-20037508.34,20037508.34,20037508.34)
            };
         var map = new OpenLayers.Map("map-id", options);
         //var osm = new OpenLayers.Layer.OSM("Open Street Map");
         //var wms = new OpenLayers.Layer.MapServer( "World Map", "http://localhost/cgi-bin/mapserv.exe", {layers: 'countries',map: '/ms4w/Apache/htdocs/MapFile06_wms.map', srs: 'EPSG:4326'} );

        //map.addLayers([osm,wms]);

        layer = new OpenLayers.Layer.WMS( "OpenLayers WMS",
            "http://sampleserver1.arcgisonline.com/ArcGIS/services/Specialty/ESRI_StatesCitiesRivers_USA/MapServer/WMSServer?request=GetCapabilities&service=WMS", {layers: "States"} );
        map.addLayer(layer);

        map.addControl(new OpenLayers.Control.LayerSwitcher());
        map.addControl(new OpenLayers.Control.MousePosition());


        map.zoomToExtent(new OpenLayers.Bounds(1490000, 5600000,1850000, 5900000));
    }
</script>
    <style>
        #map-id {
            width: 100%;
            height: 100%;
        }
    </style>
</head>
<body onload= 'inicializacija()'>
    <h1>Primer prekrivanja slojev in izbire podlag</h1>
    <div id="map-id"></div>
</body>
</html>
4

1 回答 1

7

图像显示为红色,因为请求未生成有效的地图图像。

这是调试此类问题的方式:

  • 在 FireFox 或 Chrome 中打开页面。
  • 然后将其中一张红色图像保存到磁盘。
  • 在文本编辑器中打开保存的文件。

现在,看起来您不是在请求图像,而是在请求服务器的功能。

您可能已经将服务器 URL 粘贴到您的代码中,但是您粘贴了请求服务器可以做什么以及它支持什么的 URL。

因此,只需从 URL 中删除这部分: request=GetCapabilities

这样就变成了:http://sampleserver1.arcgisonline.com/ArcGIS/services/Specialty/ESRI_StatesCitiesRivers_USA/MapServer/WMSServer?service=WMS

保存 HTML,然后刷新。

好的,我们现在实际上正在请求图像,但您仍然没有得到任何东西。

所以,做同样的事情。保存其中一张红色图像,看看里面有什么。

这次里面有一个错误信息:

<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
<!DOCTYPE ServiceExceptionReport SYSTEM "http://schemas.opengis.net/wms/1.1.1/exception_1_1_1.dtd">
<ServiceExceptionReport version="1.1.1">
  <ServiceException code="LayerNotDefined">
Parameter 'layer(s)' contains unacceptable value: States
  </ServiceException>
</ServiceExceptionReport>

看起来您正在请求一个名为 的图层States,但该图层不存在。

只要提供一个有效的层,你就应该完成。看起来服务器上有 2 层,分别称为“1”和“2”。当您将其设置为图层时,红色图像消失了,但它们似乎不包含任何有趣的东西,但这是另一个我无法帮助您解决的问题,除非我获得更多信息。

于 2013-01-08T03:42:53.907 回答