Improve zoom level selection when invoking Potlatch on an object
authorTom Hughes <tom@compton.nu>
Tue, 3 Dec 2013 14:53:24 +0000 (14:53 +0000)
committerTom Hughes <tom@compton.nu>
Tue, 3 Dec 2013 15:06:34 +0000 (15:06 +0000)
When invoking Potlatch on a node/way/relation object we should
normally have valid location information in the map parameters, so
use any zoom which is there if possible, otherwise fall back to an
object type specific default value.

Fixes #605.

app/controllers/site_controller.rb
app/views/site/_potlatch.html.erb
app/views/site/_potlatch2.html.erb

index 5c391d7b228359ca6041f8c26d9b5f86c9dc35bb..1f33b067bc3db3301161ff6943a622a7e5f0f05a 100644 (file)
@@ -50,18 +50,22 @@ class SiteController < ApplicationController
       bbox = Node.find(params[:node]).bbox.to_unscaled
       @lat = bbox.centre_lat
       @lon = bbox.centre_lon
+      @zoom = 18
     elsif params[:way]
       bbox = Way.find(params[:way]).bbox.to_unscaled
       @lat = bbox.centre_lat
       @lon = bbox.centre_lon
+      @zoom = 17
     elsif params[:note]
       note = Note.find(params[:note])
       @lat = note.lat
       @lon = note.lon
+      @zoom = 17
     elsif params[:gpx]
       trace = Trace.visible_to(@user).find(params[:gpx])
       @lat = trace.latitude
       @lon = trace.longitude
+      @zoom = 16
     end
   end
 
index 32dc99e8e4a13982e9fe21a993aac0f246a2e278..b82a8294456ea4d4c481149f7b77d32aa4fe193c 100644 (file)
     // 700,600 for fixed size, 100%,100% for resizable
   }
 
+  var mapParams = OSM.mapParams();
   <% if @lat && @lon -%>
-  doSWF(<%= @lat %>,<%= @lon %>,16);
+    doSWF(<%= @lat %>, <%= @lon %>, mapParams.zoom || <%= @zoom %>);
   <% else -%>
-  var params = OSM.mapParams();
-  doSWF(params.lat, params.lon, params.zoom || 17);
+    doSWF(mapParams.lat, mapParams.lon, mapParams.zoom || 17);
   <% end -%>
 
   $(document).ready(function () {
index 2f8e10a5bea1c096619d73324887230f6e0d2eab..bb811d65210fec1ef14d27dbe64a23f8145a73d9 100644 (file)
     }
   }
 
+  var mapParams = OSM.mapParams();
   <% if @lat && @lon -%>
-  doSWF(<%= @lat %>,<%= @lon %>,16);
+    doSWF(<%= @lat %>, <%= @lon %>, mapParams.zoom || <%= @zoom %>);
   <% else -%>
-  var params = OSM.mapParams();
-  doSWF(params.lat, params.lon, params.zoom || 17);
+    doSWF(mapParams.lat, mapParams.lon, mapParams.zoom || 17);
   <% end -%>
 
   $("body").on("click", "a.set_position", function (e) {