zoomPrecision doesn't need to be higher-order

This commit is contained in:
John Firebaugh 2013-07-23 17:32:54 -07:00
parent b5800b4c2f
commit b28511faca
3 changed files with 18 additions and 22 deletions

View file

@ -23,10 +23,7 @@
var querystring = require('querystring-component');
function zoomPrecision(zoom) {
var decimals = Math.pow(10, Math.floor(zoom/3));
return function(x) {
return Math.round(x * decimals) / decimals;
};
return Math.max(0, Math.ceil(Math.log(zoom) / Math.LN2));
}
function normalBounds(bounds) {
@ -62,18 +59,17 @@ function remoteEditHandler(bbox, select) {
* view tab and various other links
*/
function updatelinks(loc, zoom, layers, bounds, object) {
var toPrecision = zoomPrecision(zoom);
var precision = zoomPrecision(zoom);
bounds = normalBounds(bounds);
var node;
var lat = toPrecision(loc.lat),
lon = toPrecision(loc.lon || loc.lng);
var lat = loc.lat.toFixed(precision),
lon = (loc.lon || loc.lng).toFixed(precision);
if (bounds) {
var minlon = toPrecision(bounds.getWest()),
minlat = toPrecision(bounds.getSouth()),
maxlon = toPrecision(bounds.getEast()),
maxlat = toPrecision(bounds.getNorth());
var minlon = bounds.getWest().toFixed(precision),
minlat = bounds.getSouth().toFixed(precision),
maxlon = bounds.getEast().toFixed(precision),
maxlat = bounds.getNorth().toFixed(precision);
}
$(".geolink").each(setGeolink);

View file

@ -150,12 +150,12 @@ function initializeExport(map) {
}
function setBounds(bounds) {
var toPrecision = zoomPrecision(map.getZoom());
var precision = zoomPrecision(map.getZoom());
$("#minlon").val(toPrecision(bounds.getWest()));
$("#minlat").val(toPrecision(bounds.getSouth()));
$("#maxlon").val(toPrecision(bounds.getEast()));
$("#maxlat").val(toPrecision(bounds.getNorth()));
$("#minlon").val(bounds.getWest().toFixed(precision));
$("#minlat").val(bounds.getSouth().toFixed(precision));
$("#maxlon").val(bounds.getEast().toFixed(precision));
$("#maxlat").val(bounds.getNorth().toFixed(precision));
mapnikSizeChanged();
htmlUrlChanged();

View file

@ -31,17 +31,17 @@ L.extend(L.Map.prototype, {
getUrl: function(marker) {
var center = this.getCenter(),
zoom = this.getZoom(),
toZoom = zoomPrecision(zoom),
precision = zoomPrecision(zoom),
params = {
lat: toZoom(center.lat),
lon: toZoom(center.lng),
lat: center.lat.toFixed(precision),
lon: center.lng.toFixed(precision),
zoom: zoom,
layers: this.getLayersCode()
};
if (marker && this.hasLayer(marker)) {
params.mlat = toZoom(marker.getLatLng().lat);
params.mlon = toZoom(marker.getLatLng().lng);
params.mlat = marker.getLatLng().lat.toFixed(precision);
params.mlon = marker.getLatLng().lng.toFixed(precision);
}
return 'http://' + OSM.SERVER_URL + '/?' + querystring.stringify(params);