"New permalink code maintains existing parameters ... including the

lat/lon/zoom/layers." Reported by bobkare (thx, bobkare!) with a patch by same,
rewritten by Schuyler, reviewed by me -- and I'm committing because Schuyler's
whitespace was bad. (RC1, here we come!)


git-svn-id: http://svn.openlayers.org/trunk/openlayers@4345 dc9f47b5-9b13-0410-9fdd-eb0c1a62fdaf
This commit is contained in:
crschmidt
2007-09-17 03:47:57 +00:00
parent b2a4acb717
commit e961366869
2 changed files with 33 additions and 26 deletions

View File

@@ -109,37 +109,30 @@ OpenLayers.Control.Permalink = OpenLayers.Class(OpenLayers.Control, {
if (!center) {
return;
}
var zoom = "zoom=" + this.map.getZoom();
var lat = "lat=" + Math.round(center.lat*100000)/100000;
var lon = "lon=" + Math.round(center.lon*100000)/100000;
var layers = "layers=";
var params = OpenLayers.Util.getParameters(this.base);
params.zoom = this.map.getZoom();
params.lat = Math.round(center.lat*100000)/100000;
params.lon = Math.round(center.lon*100000)/100000;
params.layers = '';
for(var i=0; i< this.map.layers.length; i++) {
var layer = this.map.layers[i];
if (layer.isBaseLayer) {
layers += (layer == this.map.baseLayer) ? "B" : "0";
params.layers += (layer == this.map.baseLayer) ? "B" : "0";
} else {
layers += (layer.getVisibility()) ? "T" : "F";
params.layers += (layer.getVisibility()) ? "T" : "F";
}
}
var href = this.base;
var paramsString = lat + "&" + lon + "&" + zoom + "&" + layers;
var lastServerChar = href.charAt(href.length - 1);
if ((lastServerChar == "&") || (lastServerChar == "?")) {
href += paramsString;
} else {
if (href.indexOf('?') == -1) {
//serverPath has no ? -- add one
href += '?' + paramsString;
} else {
//serverPath contains ?, so must already have paramsString at the end
href += '&' + paramsString;
}
if( href.indexOf('?') != -1 ){
href = href.substring( 0, href.indexOf('?') );
}
href += '?' + OpenLayers.Util.getParameterString(params);
this.element.href = href;
},