3

http://trac.osgeo.org/openlayers/wiki/FrequentlyAskedQuestions#ProxyHostで述べられているように、ドキュメントに記載されているサーバーにproxy.cgiファイルを配置し、「http:/」に移動するとopenlayerページが表示されます。 /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=";"行にありますか?

前もって感謝します。

MahbubulHaqueに関して

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

これが問題の原因ではない場合は、プロキシを介してリクエストを行おうとしたときにエラーや警告を表示するFirebugなどのJavaScriptデバッガーからさらに情報を提供できますか。

アップデート

サーバーでプロキシをテストしたところ、ネットワーク内からポート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は正常に機能しますが、muensterurlはタイムアウトの問題で失敗します。ファイアウォールの設定などを見てみます。

于 2012-12-05T10:35:18.683 に答える