Refactor calculation of zoom level based on a scale
authorTom Hughes <tom@compton.nu>
Wed, 14 Mar 2012 19:12:32 +0000 (19:12 +0000)
committerTom Hughes <tom@compton.nu>
Wed, 14 Mar 2012 19:12:32 +0000 (19:12 +0000)
app/helpers/application_helper.rb
app/views/site/index.html.erb
app/views/user/_map.html.erb

index ce0c5d6..4aec9f5 100644 (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)
index e268d5d..6cff7f1 100644 (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 %>
index 71f3ad9..2d88652 100644 (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");