Round latitude and longitude values in links to a sensible number of
decimal places for the zoom level whilst still preserving accuracy sufficient to position the map within a few pixels. The relationship between zoom level, decimal places, and the accuracy with which the map can then be positioned in pixels is as follows: Zoom Decimals Accuracy (pixels) 1 0 1.42 2 0 2.84 3 1 0.57 4 1 1.14 5 1 2.28 6 2 0.46 7 2 0.91 8 2 1.82 9 3 0.36 10 3 0.73 11 3 1.46 12 4 0.29 13 4 0.58 14 4 1.17 15 5 0.23 16 5 0.47 17 5 0.93 18 6 0.19 So the worse case is at zoom 2 where accuracy is still within 3 pixels. Based on a patch by rjmunro.
This commit is contained in:
parent
f2be4b9449
commit
e373c63837
1 changed files with 14 additions and 0 deletions
|
@ -1,6 +1,20 @@
|
|||
function updatelinks(lon,lat,zoom,layers) {
|
||||
var decimals = Math.pow(10, Math.floor(zoom/3));
|
||||
var node;
|
||||
|
||||
lat = Math.round(lat * decimals) / decimals;
|
||||
lon = Math.round(lon * decimals) / decimals;
|
||||
|
||||
node = document.getElementById("permalinkanchor");
|
||||
if (node) {
|
||||
var args = getArgs(node.href);
|
||||
args["lat"] = lat;
|
||||
args["lon"] = lon;
|
||||
args["zoom"] = zoom;
|
||||
args["layers"] = layers;
|
||||
node.href = setArgs(node.href, args);
|
||||
}
|
||||
|
||||
node = document.getElementById("viewanchor");
|
||||
if (node) {
|
||||
var args = getArgs(node.href);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue