3

正如在http://trac.osgeo.org/openlayers/wiki/FrequentlyAskedQuestions#ProxyHost中所说,我确实将 proxy.cgi 文件放在了文档所说的服务器中,并且在转到“http:/ /mydomain.com/cgi-bin/proxy.cgi”。这意味着为服务器正确设置了代理。但是当我尝试在我的脚本中使用这个代理时,它不起作用。我把“ OpenLayers.ProxyHost = "/cgi-bin/proxy.cgi?url=";”放在我的脚本中。以便可以使用代理。

我的代码在这里不起作用。

ainSelect = new OpenLayers.Control.WMSGetFeatureInfo({
                    url: 'http://ec2-23-22-12-137.compute-1.amazonaws.com:8080/geoserver/KCRE/wms',
                    title: 'Identify features by clicking',
                    layers: [lyrParcels],
                    queryVisible: true
                });
ainSelect.infoFormat = 'application/vnd.ogc.gml';
                ainSelect.events.register("getfeatureinfo", this, pickAINid);
                map.addControl(ainSelect);
                ainSelect.activate();

而pickAINid函数是:

function pickAINid(e) {
            //alert(e.features.length);
            if (e.features && e.features.length) {

                var val = e.features[0].attributes.ain;
                alert(val);
                //document.getElementById('roadId').value = val;
            }
        }

所以它应该在我点击地图时提醒我 AIN 号码。据我所知,e.features.length = 0。这意味着 WMSGetFeatureInfo 无法正常工作。

请注意我已经使用了这些层:[lyrParcels] 我创建了那个层,在此之前我没有在这里给出代码。

还有一点。当我从本地运行此代码时,此代码运行良好。

谁能告诉我我做错了什么?是在这条“ OpenLayers.ProxyHost = "/cgi-bin/proxy.cgi?url=";”线上吗?

提前致谢。

问候马布布尔哈克

4

1 回答 1

1

在 proxy.cgi 文件顶部有一个允许的主机列表(如下所示)。

allowedHosts = ['www.openlayers.org', 'openlayers.org', 
            'labs.metacarta.com', 'world.freemap.in', 
            'prototype.openmnnd.org', 'geo.openplans.org',
            'sigma.openplans.org', 'demo.opengeo.org',
            'www.openstreetmap.org', 'sample.azavea.com',
            'v2.suite.opengeo.org', 'v-swe.uni-muenster.de:8080', 
            'vmap0.tiles.osgeo.org', 'www.openrouteservice.org'] 

如果你还没有,你需要添加你正在联系的服务器的域(和你的情况下的端口不是 80),在这种情况下:

ec2-23-22-12-137.compute-1.amazonaws.com:8080

如果这不是问题的根源,您是否可以从 javascript 调试器中提供更多信息,例如当您尝试通过代理发出请求时显示任何错误或警告的 firebug。

更新

从您的服务器上测试您的代理看来,您从网络内部到端口 8080 的连接有问题。

这可以通过尝试 url 来测试

http://kleincom.com/cgi-bin/proxy.cgi?url=http://v-swe.uni-muenster.de:8080

http://kleincom.com/cgi-bin/proxy.cgi?url=http://labs.metacarta.com

metacarta url 工作正常,但 muenster url 因超时问题而失败。我会看看你的防火墙设置或类似设置。

于 2012-12-05T10:35:18.683 回答