Improve zoom level selection when invoking Potlatch on an object

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.
This commit is contained in:
Tom Hughes 2013-12-03 14:53:24 +00:00
parent 6362f60a54
commit 50fafa14f8
3 changed files with 10 additions and 6 deletions

View file

@ -50,18 +50,22 @@ class SiteController < ApplicationController
bbox = Node.find(params[:node]).bbox.to_unscaled bbox = Node.find(params[:node]).bbox.to_unscaled
@lat = bbox.centre_lat @lat = bbox.centre_lat
@lon = bbox.centre_lon @lon = bbox.centre_lon
@zoom = 18
elsif params[:way] elsif params[:way]
bbox = Way.find(params[:way]).bbox.to_unscaled bbox = Way.find(params[:way]).bbox.to_unscaled
@lat = bbox.centre_lat @lat = bbox.centre_lat
@lon = bbox.centre_lon @lon = bbox.centre_lon
@zoom = 17
elsif params[:note] elsif params[:note]
note = Note.find(params[:note]) note = Note.find(params[:note])
@lat = note.lat @lat = note.lat
@lon = note.lon @lon = note.lon
@zoom = 17
elsif params[:gpx] elsif params[:gpx]
trace = Trace.visible_to(@user).find(params[:gpx]) trace = Trace.visible_to(@user).find(params[:gpx])
@lat = trace.latitude @lat = trace.latitude
@lon = trace.longitude @lon = trace.longitude
@zoom = 16
end end
end end

View file

@ -51,11 +51,11 @@
// 700,600 for fixed size, 100%,100% for resizable // 700,600 for fixed size, 100%,100% for resizable
} }
var mapParams = OSM.mapParams();
<% if @lat && @lon -%> <% if @lat && @lon -%>
doSWF(<%= @lat %>,<%= @lon %>,16); doSWF(<%= @lat %>, <%= @lon %>, mapParams.zoom || <%= @zoom %>);
<% else -%> <% else -%>
var params = OSM.mapParams(); doSWF(mapParams.lat, mapParams.lon, mapParams.zoom || 17);
doSWF(params.lat, params.lon, params.zoom || 17);
<% end -%> <% end -%>
$(document).ready(function () { $(document).ready(function () {

View file

@ -70,11 +70,11 @@
} }
} }
var mapParams = OSM.mapParams();
<% if @lat && @lon -%> <% if @lat && @lon -%>
doSWF(<%= @lat %>,<%= @lon %>,16); doSWF(<%= @lat %>, <%= @lon %>, mapParams.zoom || <%= @zoom %>);
<% else -%> <% else -%>
var params = OSM.mapParams(); doSWF(mapParams.lat, mapParams.lon, mapParams.zoom || 17);
doSWF(params.lat, params.lon, params.zoom || 17);
<% end -%> <% end -%>
$("body").on("click", "a.set_position", function (e) { $("body").on("click", "a.set_position", function (e) {