0

OpenLayers スクリプトを機能させようとしていますが、エラーが発生したようです。誰か助けてくれませんか?この時点で私が持っているものは次のとおりです。

<body onload="init()">
<div id="map" class="smallmap"></div>
   <script type="text/javascript">
    var lon = 12.3113999;
    var lat = 50.5234051;
    var zoom = 5;
    var map, layer;
    OpenLayers.ProxyHost = "/cgi-bin/proxy.cgi?url=";

    function init(){
        map = new OpenLayers.Map( 'map' );
        layer = new OpenLayers.Layer.WMS( "OpenLayers WMS",
        "http://ows1.geocontent.de/owsProxy/", {
                layers: 'cascade:ortho'
            },{
                proxyUrl: "/cgi-bin/proxy.cgi?url=",    

                getURL: function ( bounds ){
                    var url = OpenLayers.Layer.WMS.prototype.getURL.call( this, bounds );
                    if( this.proxyUrl && OpenLayers.String.startsWith( url, "http" ) ) {
                    url = this.proxyUrl + encodeURIComponent( url );
                }
                return url;
            }
        });

        map.addLayer(layer); 
        map.setCenter(new OpenLayers.LonLat(lon, lat), zoom);

    }
</script>

スクリプトは実際にはクライアント IP を使用しています。このスクリプトをサーバー IP で動作させるにはどうすればよいでしょうか?

ows1.geocontent.de は proxy.cgi に設定されていますが、サンプル ページで確認できるのはコンテンツのない白い四角だけです。何か案は?

4

1 に答える 1

0

問題は、OpenLayers.Layer.WMS で、URL が既にエンコードされていることだと思います。次に、encodeURIComponent を使用して再度エンコードしますが、実際には奇妙な結果が得られます。したがって、decodeURIComponent を使用して最初に URL をデコードするだけです。したがって、URL を宣言するときは、次のように記述します。

url = this.proxyUrl + encodeURIComponent(decodeURIComponent(url));

お役に立てれば...

于 2014-06-02T16:39:24.240 に答える