Extends Leaflet-fullhash properly
This commit is contained in:
parent
ac57250b7e
commit
d4c5ca67b9
4 changed files with 74 additions and 3 deletions
65
js/plugin/Hash.js
Normal file
65
js/plugin/Hash.js
Normal file
|
|
@ -0,0 +1,65 @@
|
|||
BR.Hash = L.hash.extend({
|
||||
|
||||
formatHash: function(map) {
|
||||
var center = map.getCenter(),
|
||||
zoom = map.getZoom(),
|
||||
precision = Math.max(0, Math.ceil(Math.log(zoom) / Math.LN2)),
|
||||
layers = [];
|
||||
|
||||
//console.log(this.options);
|
||||
var options = this.options;
|
||||
//Check active layers
|
||||
for(var key in options) {
|
||||
if (options.hasOwnProperty(key)) {
|
||||
if (map.hasLayer(options[key])) {
|
||||
layers.push(key);
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
var url = "#" + [zoom,
|
||||
center.lat.toFixed(precision),
|
||||
center.lng.toFixed(precision),
|
||||
layers.join("-")
|
||||
].join("/");
|
||||
|
||||
if (this.additionalCb != null) {
|
||||
var additional = this.additionalCb();
|
||||
if (additional != null) {
|
||||
url += additional;
|
||||
}
|
||||
}
|
||||
|
||||
return url;
|
||||
},
|
||||
|
||||
update: function() {
|
||||
var hash = location.hash;
|
||||
if (hash === this.lastHash) {
|
||||
return;
|
||||
}
|
||||
var parsed = this.parseHash(hash);
|
||||
if (parsed) {
|
||||
this.movingMap = true;
|
||||
|
||||
this.map.setView(parsed.center, parsed.zoom);
|
||||
var layers = parsed.layers,
|
||||
options = this.options,
|
||||
that = this;
|
||||
//Add/remove layers
|
||||
this.map.eachLayer(function(layer) {
|
||||
that.map.removeLayer(layer);
|
||||
});
|
||||
|
||||
layers.forEach(function(element, index, array) {
|
||||
//console.log(options[element]);
|
||||
that.map.addLayer(options[element]);
|
||||
});
|
||||
|
||||
this.movingMap = false;
|
||||
} else {
|
||||
this.onMapMove(this.map);
|
||||
}
|
||||
},
|
||||
|
||||
});
|
||||
Loading…
Add table
Add a link
Reference in a new issue