diff --git a/js/Map.js b/js/Map.js
index 55a5767..8c1f06b 100644
--- a/js/Map.js
+++ b/js/Map.js
@@ -41,7 +41,7 @@ BR.Map = {
attribution: 'World Imagery '
+ '© Esri, sources: '
+ 'Esri, DigitalGlobe, Earthstar Geographics, CNES/Airbus DS, GeoEye, USDA FSA, USGS, Getmapping, Aerogrid, IGN, IGP, and the GIS User Community'
- });
+ });
var cycling = L.tileLayer('http://tile.waymarkedtrails.org/cycling/{z}/{x}/{y}.png', {
maxNativeZoom: 18,
@@ -124,10 +124,14 @@ BR.Map = {
BR.debug = BR.debug || {};
BR.debug.map = map;
+ var layersAndOverlays = baseLayers;
+ for (var o in overlays) {
+ layersAndOverlays[o] = overlays[o];
+ }
return {
map: map,
layersControl: layersControl,
- layers: baseLayers
+ layers: layersAndOverlays
};
}
diff --git a/js/index.js b/js/index.js
index f743695..9d7ffde 100644
--- a/js/index.js
+++ b/js/index.js
@@ -235,38 +235,21 @@
router.setOptions(routingOptions.getOptions());
profile.update(routingOptions.getOptions());
- urlHash = new L.Hash(map, mapLayers, function() {
- return router.getUrl(routing.getWaypoints(), null);
- });
- routingOptions.on('update', urlHash.updateHash, urlHash);
- nogos.on('update', urlHash.updateHash, urlHash);
- // waypoint add, move, delete (but last)
- routing.on('routing:routeWaypointEnd', urlHash.updateHash, urlHash);
- // delete last waypoint
- routing.on('waypoint:click', function (evt) {
- var r = evt.marker._routing;
- if (!r.prevMarker && !r.nextMarker) {
- urlHash.updateHash();
+ var onHashChangeCb = function(url) {
+ var url2params = function (s) {
+ var p = {};
+ var sep = '&';
+ if (s.search('&') !== -1)
+ sep = '&';
+ var params = s.split(sep);
+ for (var i = 0; i < params.length; i++) {
+ var tmp = params[i].split('=');
+ if (tmp.length !== 2) continue;
+ p[tmp[0]] = decodeURIComponent(tmp[1]);
+ }
+ return p;
}
- }, urlHash);
-
- var url2params = function (s) {
- var p = {};
- var sep = '&';
- if (s.search('&') !== -1)
- sep = '&';
- var params = s.split(sep);
- for (var i = 0; i < params.length; i++) {
- var tmp = params[i].split('=');
- if (tmp.length !== 2) continue;
- p[tmp[0]] = decodeURIComponent(tmp[1]);
- }
- return p;
- }
-
- urlHash.onHashChangeCb = function(url) {
if (url == null) return;
- url = url.substr('brouter?'.length);
var opts = router.parseUrlParams(url2params(url));
router.setOptions(opts);
routingOptions.setOptions(opts);
@@ -280,6 +263,21 @@
}
};
+ urlHash = new L.Hash(map, mapLayers, function() {
+ var url = router.getUrl(routing.getWaypoints(), null);
+ return "&" + url.substr('brouter?'.length + 1);
+ }, onHashChangeCb);
+ routingOptions.on('update', urlHash.updateHash, urlHash);
+ nogos.on('update', urlHash.updateHash, urlHash);
+ // waypoint add, move, delete (but last)
+ routing.on('routing:routeWaypointEnd', urlHash.updateHash, urlHash);
+ // delete last waypoint
+ routing.on('waypoint:click', function (evt) {
+ var r = evt.marker._routing;
+ if (!r.prevMarker && !r.nextMarker) {
+ urlHash.updateHash();
+ }
+ }, urlHash);
$(window).resize(function () {
elevation.addBelow(map);
diff --git a/js/plugin/leaflet-fullHash.js b/js/plugin/leaflet-fullHash.js
index 72634c2..a7a977e 100644
--- a/js/plugin/leaflet-fullHash.js
+++ b/js/plugin/leaflet-fullHash.js
@@ -9,6 +9,7 @@
this.onHashChange = L.Util.bind(this.onHashChange, this);
this.additionalCb = additionalCb;
this.onHashChangeCb = onHashChangeCb;
+ this.layers = layers;
if (map) {
this.init(map, layers);
}
@@ -18,13 +19,14 @@
if(hash.indexOf('#map=') === 0) {
hash = hash.substr(5);
}
- var args = hash.split("/");
- if (args.length >= 4) {
- var zoom = parseInt(args[0], 10),
- lat = parseFloat(args[1]),
- lon = parseFloat(args[2]),
- layer = decodeURIComponent(args[3]);
- additional = args[4];
+ var args = hash.split("&");
+ var mapsArgs = args[0].split("/");
+ if (mapsArgs.length == 4) {
+ var zoom = parseInt(mapsArgs[0], 10),
+ lat = parseFloat(mapsArgs[1]),
+ lon = parseFloat(mapsArgs[2]),
+ layer = decodeURIComponent(mapsArgs[3]);
+ additional = args[1];
if (isNaN(zoom) || isNaN(lat) || isNaN(lon)) {
return false;
} else {
@@ -139,12 +141,16 @@
layer = parsed.layer in options ? parsed.layer : Object.keys(options)[0],
that = this;
- //FIXME: removing/readding layers breaks Routing plugin
//Add/remove layer
- // this.map.eachLayer(function(layer) {
- // that.map.removeLayer(layer);
- // });
- // that.map.addLayer(options[layer]);
+ this.map.eachLayer(function(layer) {
+ for (alayer in that.layers) {
+ if (that.layers[alayer] == layer) {
+ that.map.removeLayer(layer);
+ break;
+ }
+ }
+ });
+ that.map.addLayer(options[layer]);
this.isUpdatingHash = false;
} else {