From: Tom Hughes Date: Wed, 14 Mar 2012 19:12:32 +0000 (+0000) Subject: Refactor calculation of zoom level based on a scale X-Git-Tag: live~5721 X-Git-Url: https://git.openstreetmap.org/rails.git/commitdiff_plain/2c397321c9309eb9cd4dfed21375fc821a8d2d37 Refactor calculation of zoom level based on a scale --- diff --git a/app/helpers/application_helper.rb b/app/helpers/application_helper.rb index ce0c5d67b..4aec9f5c1 100644 --- a/app/helpers/application_helper.rb +++ b/app/helpers/application_helper.rb @@ -125,6 +125,10 @@ module ApplicationHelper end end + def scale_to_zoom(scale) + Math.log(360.0 / (scale.to_f * 512.0)) / Math.log(2.0) + end + private def javascript_strings_for_key(key) diff --git a/app/views/site/index.html.erb b/app/views/site/index.html.erb index e268d5d3c..6cff7f133 100644 --- a/app/views/site/index.html.erb +++ b/app/views/site/index.html.erb @@ -151,11 +151,11 @@ end <% end %> <% else %> var centre = new OpenLayers.LonLat(<%= lon %>, <%= lat %>); + <% if params[:scale].to_f > 0 then -%> + var zoom = <%= scale_to_zoom params[:scale] %>; + <% else -%> var zoom = <%= zoom %>; - - <% if params[:scale] and params[:scale].length > 0 and params[:scale].to_f > 0 then %> - zoom = <%= Math.log(360.0 / (params[:scale].to_f * 512.0)) / Math.log(2.0) %>; - <% end %> + <% end -%> setMapCenter(centre, zoom); <% end %> diff --git a/app/views/user/_map.html.erb b/app/views/user/_map.html.erb index 71f3ad9e5..2d886527c 100644 --- a/app/views/user/_map.html.erb +++ b/app/views/user/_map.html.erb @@ -24,11 +24,11 @@ end function init(){ var centre = new OpenLayers.LonLat(<%= lon %>, <%= lat %>); + <% if params[:scale].to_f > 0 then -%> + var zoom = <%= scale_to_zoom params[:scale] %>; + <% else -%> var zoom = <%= zoom %>; - - <% if params[:scale] and params[:scale].length > 0 and params[:scale].to_f > 0 then %> - zoom = <%= Math.log(360.0 / (params[:scale].to_f * 512.0)) / Math.log(2.0) %>; - <% end %> + <% end -%> var map = createMap("map");