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 = this.proxyUrl + encodeURIComponent(decodeURIComponent(url));

希望这可以帮助...

于 2014-06-02T16:39:24.240 回答