Extends Leaflet-fullhash properly
This commit is contained in:
parent
ac57250b7e
commit
d4c5ca67b9
4 changed files with 74 additions and 3 deletions
|
|
@ -25,7 +25,8 @@
|
|||
"leaflet.locatecontrol": "^0.60.0",
|
||||
"font-awesome": "^4.7.0",
|
||||
"bootstrap-select": "hugdx/bootstrap-select#patch-1",
|
||||
"leaflet-sidebar": "^0.1.9"
|
||||
"leaflet-sidebar": "^0.1.9",
|
||||
"leaflet-fullHash": "KoGor/leaflet-fullHash#master"
|
||||
},
|
||||
"overrides": {
|
||||
"leaflet": {
|
||||
|
|
@ -96,6 +97,9 @@
|
|||
"css/font-awesome.css",
|
||||
"fonts/*"
|
||||
]
|
||||
},
|
||||
"leaflet-fullHash": {
|
||||
"main": "leaflet-fullHash.js"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -263,10 +263,12 @@
|
|||
}
|
||||
};
|
||||
|
||||
urlHash = new L.Hash(map, mapLayers, function() {
|
||||
urlHash = new BR.Hash(map, mapLayers);
|
||||
urlHash.additionalCb = function() {
|
||||
var url = router.getUrl(routing.getWaypoints(), null);
|
||||
return "&" + url.substr('brouter?'.length + 1);
|
||||
}, onHashChangeCb);
|
||||
};
|
||||
urlHash.onHashChangeCb = onHashChangeCb;
|
||||
routingOptions.on('update', urlHash.updateHash, urlHash);
|
||||
nogos.on('update', urlHash.updateHash, urlHash);
|
||||
// waypoint add, move, delete (but last)
|
||||
|
|
|
|||
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