我正在尝试让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中设置 - 但我在示例页面上看到的只是没有内容的白色方块。有什么想法吗?
答案 0 :(得分:0)
我认为问题是在OpenLayers.Layer.WMS中,url已经被编码了。然后使用encodeURIComponent再次对其进行编码,这实际上会产生奇怪的结果。因此,首先使用decodeURIComponent解码您的网址。因此,当您声明您的网址时,请输入:
url = this.proxyUrl + encodeURIComponent(decodeURIComponent(url));
希望这会有所帮助......