为什么这个WMS图层在openlayers中没有显示出来?

3

我正在尝试展示一个已发布的ArcGIS地图服务中的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>
1个回答

7
这些图片显示为红色,是因为请求没有返回有效的地图图像。
以下是解决这个问题的方法:
1. 在FireFox或Chrome中打开页面。 2. 保存其中一个红色图片到磁盘。 3. 在文本编辑器中打开保存的文件。
看起来你并没有请求图片,而是请求服务器的能力。
你可能已经将服务器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”。当你将其设置为图层时,红色图片就会消失,但它们似乎并不包含任何有趣的内容,这是另一个问题,如果我没有更多的信息,我无法帮助你。


当您查看美国时,它应该包含一些有趣的东西。请在此处查看:http://sampleserver1.arcgisonline.com/ArcGIS/rest/services/Specialty/ESRI_StatesCitiesRivers_USA/MapServer 您可以在此处查看图层应包含的内容:http://sampleserver1.arcgisonline.com/ArcGIS/rest/services/Specialty/ESRI_StatesCitiesRivers_USA/MapServer?f=jsapi 根据您发布的内容进行操作,即使我缩放到美国,似乎也没有显示任何内容。 - Rolando
如果我将WMS图层添加到ArcGIS.com地图中,它可以理解范围,但不显示任何数据... - Juffy
你的想法是什么?也许你没有指定正确的坐标投影方式,导致所有内容都显示在视野之外。你指定了EPSG:4326(即WGS84),但你用来设置范围和缩放框的坐标似乎是以epsg:900913的格式输入的。你知道我在说什么吗? - Wouter van Nifterick

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接