OpenLayers代理无法正常工作

时间:2013-09-16 08:03:58

标签: javascript openlayers

我正在尝试让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中设置 - 但我在示例页面上看到的只是没有内容的白色方块。有什么想法吗?

1 个答案:

答案 0 :(得分:0)

我认为问题是在OpenLayers.Layer.WMS中,url已经被编码了。然后使用encodeURIComponent再次对其进行编码,这实际上会产生奇怪的结果。因此,首先使用decodeURIComponent解码您的网址。因此,当您声明您的网址时,请输入:

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

希望这会有所帮助......