Refactor calculation of zoom level based on a scale

This commit is contained in:
Tom Hughes 2012-03-14 19:12:32 +00:00
parent 701325e9ef
commit 2c397321c9
3 changed files with 12 additions and 8 deletions

View file

@ -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)

View file

@ -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 %>

View file

@ -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");