mirror of
https://github.com/neocturne/MinedMap.git
synced 2025-03-04 17:23:33 +01:00
viewer: more URL hash improvements
This commit is contained in:
parent
82acbeacb1
commit
02808dcf9b
1 changed files with 39 additions and 34 deletions
|
@ -122,18 +122,25 @@ window.createMap = function () {
|
||||||
mipmaps = res.mipmaps,
|
mipmaps = res.mipmaps,
|
||||||
spawn = res.spawn;
|
spawn = res.spawn;
|
||||||
|
|
||||||
var args = parseHash(),
|
var x, z, zoom, light;
|
||||||
zoom = parseInt(args['zoom']),
|
|
||||||
x = parseFloat(args['x']),
|
|
||||||
z = parseFloat(args['z']),
|
|
||||||
light = parseInt(args['light']);
|
|
||||||
|
|
||||||
if (isNaN(zoom))
|
var updateParams = function () {
|
||||||
zoom = 0;
|
var args = parseHash();
|
||||||
if (isNaN(x))
|
|
||||||
x = spawn.x;
|
zoom = parseInt(args['zoom']);
|
||||||
if (isNaN(z))
|
x = parseFloat(args['x']);
|
||||||
z = spawn.z;
|
z = parseFloat(args['z']);
|
||||||
|
light = parseInt(args['light']);
|
||||||
|
|
||||||
|
if (isNaN(zoom))
|
||||||
|
zoom = 0;
|
||||||
|
if (isNaN(x))
|
||||||
|
x = spawn.x;
|
||||||
|
if (isNaN(z))
|
||||||
|
z = spawn.z;
|
||||||
|
};
|
||||||
|
|
||||||
|
updateParams();
|
||||||
|
|
||||||
var map = L.map('map', {
|
var map = L.map('map', {
|
||||||
center: [-z, x],
|
center: [-z, x],
|
||||||
|
@ -169,14 +176,13 @@ window.createMap = function () {
|
||||||
});
|
});
|
||||||
|
|
||||||
var makeHash = function () {
|
var makeHash = function () {
|
||||||
var zoom = map.getZoom(),
|
var ret = '#x='+x+'&z='+z;
|
||||||
center = map.getCenter(),
|
|
||||||
x = Math.round(center.lng),
|
if (zoom != 0)
|
||||||
z = Math.round(-center.lat),
|
ret += '&zoom='+zoom;
|
||||||
ret = '#x='+x+'&z='+z+'&zoom='+zoom;
|
|
||||||
|
|
||||||
if (map.hasLayer(lightLayer))
|
if (map.hasLayer(lightLayer))
|
||||||
ret += '&light=1';
|
ret += '&light=1';
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
};
|
};
|
||||||
|
@ -185,30 +191,27 @@ window.createMap = function () {
|
||||||
window.location.hash = makeHash();
|
window.location.hash = makeHash();
|
||||||
};
|
};
|
||||||
|
|
||||||
|
var refreshHash = function () {
|
||||||
|
zoom = map.getZoom();
|
||||||
|
center = map.getCenter();
|
||||||
|
x = Math.round(center.lng);
|
||||||
|
z = Math.round(-center.lat);
|
||||||
|
|
||||||
|
updateHash();
|
||||||
|
}
|
||||||
|
|
||||||
updateHash();
|
updateHash();
|
||||||
|
|
||||||
map.on('moveend', updateHash);
|
map.on('moveend', refreshHash);
|
||||||
map.on('zoomend', updateHash);
|
map.on('zoomend', refreshHash);
|
||||||
map.on('layeradd', updateHash);
|
map.on('layeradd', refreshHash);
|
||||||
map.on('layerremove', updateHash);
|
map.on('layerremove', refreshHash);
|
||||||
|
|
||||||
window.onhashchange = function () {
|
window.onhashchange = function () {
|
||||||
if (window.location.hash == makeHash())
|
if (window.location.hash == makeHash())
|
||||||
return;
|
return;
|
||||||
|
|
||||||
var args = parseHash(),
|
updateParams();
|
||||||
center = map.getCenter(),
|
|
||||||
zoom = parseInt(args['zoom']),
|
|
||||||
x = parseFloat(args['x']),
|
|
||||||
z = parseFloat(args['z']),
|
|
||||||
light = parseInt(args['light']);
|
|
||||||
|
|
||||||
if (isNaN(zoom))
|
|
||||||
zoom = map.getZoom();
|
|
||||||
if (isNaN(x))
|
|
||||||
x = center.lng;
|
|
||||||
if (isNaN(z))
|
|
||||||
z = -center.lat;
|
|
||||||
|
|
||||||
map.setView([-z, x], zoom);
|
map.setView([-z, x], zoom);
|
||||||
|
|
||||||
|
@ -216,6 +219,8 @@ window.createMap = function () {
|
||||||
map.addLayer(lightLayer);
|
map.addLayer(lightLayer);
|
||||||
else
|
else
|
||||||
map.removeLayer(lightLayer);
|
map.removeLayer(lightLayer);
|
||||||
|
|
||||||
|
updateHash();
|
||||||
};
|
};
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
Loading…
Add table
Reference in a new issue