From cbb7d974052c079dff81b70d40c0d134b14298ae Mon Sep 17 00:00:00 2001 From: Tom Hughes Date: Sun, 29 Jul 2007 14:26:42 +0000 Subject: [PATCH] Add support for displaying a map covering a specified bounding box. --- app/views/site/index.rhtml | 23 ++++++++++++++++++++--- app/views/user/account.rhtml | 4 +++- public/javascripts/map.js | 3 +-- 3 files changed, 24 insertions(+), 6 deletions(-) diff --git a/app/views/site/index.rhtml b/app/views/site/index.rhtml index 2a468f893..8e52166c8 100644 --- a/app/views/site/index.rhtml +++ b/app/views/site/index.rhtml @@ -6,6 +6,14 @@ <% mlat = params['mlat'] %> <% end %> +<% if params['minlon'] and params['minlat'] and params['maxlon'] and params['maxlat'] %> +<% bbox = true %> +<% minlon = params['minlon'] %> +<% minlat = params['minlat'] %> +<% maxlon = params['maxlon'] %> +<% maxlat = params['maxlat'] %> +<% end %> + <% if params['lon'] and params['lat'] %> <% lon = params['lon'] %> <% lat = params['lat'] %> @@ -43,22 +51,31 @@ var map; function init(){ + var map = createMap("map"); + + <% if bbox %> + var min = lonLatToMercator(new OpenLayers.LonLat(<%= minlon %>, <%= minlat %>)); + var max = lonLatToMercator(new OpenLayers.LonLat(<%= maxlon %>, <%= maxlat %>)); + var bbox = new OpenLayers.Bounds(min.lon, min.lat, max.lon, max.lat); + + map.zoomToExtent(bbox); + <% else %> var centre = lonLatToMercator(new OpenLayers.LonLat(<%= lon %>, <%= lat %>)); var zoom = <%= zoom %>; - var layers = "<%= layers %>"; <% if params['scale'] and params['scale'].length > 0 then %> zoom = scaleToZoom(<%= params['scale'].to_f() %>); <% end %> - var map = createMap("map", centre, zoom); + map.setCentre(center, zoom); + <% end %> <% if marker %> addMarkerToMap(lonLatToMercator(new OpenLayers.LonLat(<%= mlon %>, <%= mlat %>))); <% end %> <% if layers %> - setMapLayers(layers); + setMapLayers("<%= layers %>"); <% end %> map.events.register("moveend", map, updateLocation); diff --git a/app/views/user/account.rhtml b/app/views/user/account.rhtml index 4933dc085..9be6a1dbc 100644 --- a/app/views/user/account.rhtml +++ b/app/views/user/account.rhtml @@ -64,7 +64,9 @@ zoom = scaleToZoom(<%= params['scale'].to_f() %>); <% end %> - var map = createMap("map", centre, zoom); + var map = createMap("map"); + + map.setCentre(centre, zoom); <% if marker %> marker = addMarkerToMap(lonLatToMercator(new OpenLayers.LonLat(<%= mlon %>, <%= mlat %>)), null, "Your location"); diff --git a/public/javascripts/map.js b/public/javascripts/map.js index 803f273bd..781ea5551 100644 --- a/public/javascripts/map.js +++ b/public/javascripts/map.js @@ -2,7 +2,7 @@ var map; var markers; var popup; -function createMap(divName, centre, zoom) { +function createMap(divName) { OpenLayers.Util.onImageLoadError = function() { this.src = OpenLayers.Util.getImagesLocation() + "404.png"; } @@ -28,7 +28,6 @@ function createMap(divName, centre, zoom) { map.addLayer(markers); map.addControl(new OpenLayers.Control.LayerSwitcher()); - map.setCenter(centre, zoom); return map; } -- 2.43.2