aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--perllib/FixMyStreet/Map/FMS.pm3
-rw-r--r--perllib/FixMyStreet/Map/OSM.pm19
-rw-r--r--templates/web/default/maps/openlayers.html6
-rw-r--r--web/js/map-OpenLayers.js6
-rw-r--r--web/js/map-bing-ol.js1
5 files changed, 20 insertions, 15 deletions
diff --git a/perllib/FixMyStreet/Map/FMS.pm b/perllib/FixMyStreet/Map/FMS.pm
index d0a28be9b..a5a2dd9f0 100644
--- a/perllib/FixMyStreet/Map/FMS.pm
+++ b/perllib/FixMyStreet/Map/FMS.pm
@@ -11,9 +11,6 @@ use base 'FixMyStreet::Map::OSM';
use strict;
-use constant ZOOM_LEVELS => 5;
-use constant MIN_ZOOM_LEVEL => 13;
-
# Is set by the JavaScript
sub map_type {
return '""';
diff --git a/perllib/FixMyStreet/Map/OSM.pm b/perllib/FixMyStreet/Map/OSM.pm
index 4543ce2da..9b968b4f6 100644
--- a/perllib/FixMyStreet/Map/OSM.pm
+++ b/perllib/FixMyStreet/Map/OSM.pm
@@ -51,10 +51,17 @@ sub copyright {
sub display_map {
my ($self, $c, %params) = @_;
+ my $numZoomLevels = ZOOM_LEVELS;
+ my $zoomOffset = MIN_ZOOM_LEVEL;
+ if ($params{any_zoom}) {
+ $numZoomLevels = 18;
+ $zoomOffset = 0;
+ }
+
# Adjust zoom level dependent upon population density
my $dist = mySociety::Gaze::get_radius_containing_population( $params{latitude}, $params{longitude}, 200_000 );
- my $default_zoom = ZOOM_LEVELS - 3;
- $default_zoom = ZOOM_LEVELS - 2 if $dist < 10;
+ my $default_zoom = $numZoomLevels - 3;
+ $default_zoom = $numZoomLevels - 2 if $dist < 10;
# Map centre may be overridden in the query string
$params{latitude} = Utils::truncate_coordinate($c->req->params->{lat} + 0)
@@ -63,9 +70,9 @@ sub display_map {
if defined $c->req->params->{lon};
my $zoom = defined $c->req->params->{zoom} ? $c->req->params->{zoom} + 0 : $default_zoom;
- $zoom = ZOOM_LEVELS - 1 if $zoom >= ZOOM_LEVELS;
+ $zoom = $numZoomLevels - 1 if $zoom >= $numZoomLevels;
$zoom = 0 if $zoom < 0;
- my $zoom_act = MIN_ZOOM_LEVEL + $zoom;
+ my $zoom_act = $zoomOffset + $zoom;
my ($x_tile, $y_tile) = latlon_to_tile_with_adjust($params{latitude}, $params{longitude}, $zoom_act);
foreach my $pin (@{$params{pins}}) {
@@ -82,7 +89,8 @@ sub display_map {
y_tile => $y_tile,
zoom => $zoom,
zoom_act => $zoom_act,
- zoom_levels => ZOOM_LEVELS,
+ zoomOffset => $zoomOffset,
+ numZoomLevels => $numZoomLevels,
compass => compass( $x_tile, $y_tile, $zoom_act ),
};
}
@@ -158,6 +166,7 @@ sub click_to_tile {
# Given some click co-ords (the tile they were on, and where in the
# tile they were), convert to WGS84 and return.
+# XXX Note use of MIN_ZOOM_LEVEL here.
sub click_to_wgs84 {
my ($self, $c, $pin_tile_x, $pin_x, $pin_tile_y, $pin_y) = @_;
my $tile_x = click_to_tile($pin_tile_x, $pin_x);
diff --git a/templates/web/default/maps/openlayers.html b/templates/web/default/maps/openlayers.html
index ae670ce13..7da732913 100644
--- a/templates/web/default/maps/openlayers.html
+++ b/templates/web/default/maps/openlayers.html
@@ -12,6 +12,8 @@ var fixmystreet = {
[% IF map.zoom -%]
'zoom': [% map.zoom %],
[%- END %]
+ 'numZoomLevels': [% map.numZoomLevels %],
+ 'zoomOffset': [% map.zoomOffset %],
'map_type': [% map.map_type %],
'pins': [% INCLUDE maps/pins_js.html %]
}
@@ -51,9 +53,9 @@ var fixmystreet = {
east = c.uri_with( { lat = map.compass.east.0, lon = map.compass.east.1, zoom = map.zoom } )
west = c.uri_with( { lat = map.compass.west.0, lon = map.compass.west.1, zoom = map.zoom } )
world = c.uri_with( { zoom = 0 } );
- SET zoom_in = c.uri_with( { zoom = map.zoom + 1 } ) IF map.zoom < map.zoom_levels - 1;
+ SET zoom_in = c.uri_with( { zoom = map.zoom + 1 } ) IF map.zoom < map.numZoomLevels - 1;
SET zoom_out = c.uri_with( { zoom = map.zoom - 1 } ) IF map.zoom > 0;
- SET zoom_in = '#' IF map.zoom >= map.zoom_levels - 1;
+ SET zoom_in = '#' IF map.zoom >= map.numZoomLevels - 1;
SET zoom_out = '#' IF map.zoom <= 0;
%]
<div style="position: absolute; left: 4px; top: 4px; z-index: 1007;" class="olControlPanZoom olControlNoSelect" unselectable="on">
diff --git a/web/js/map-OpenLayers.js b/web/js/map-OpenLayers.js
index 22492e400..83e535f1c 100644
--- a/web/js/map-OpenLayers.js
+++ b/web/js/map-OpenLayers.js
@@ -1,7 +1,5 @@
YAHOO.util.Event.onContentReady('map', function() {
- fixmystreet.ZOOM_OFFSET = 13;
-
var perm = new OpenLayers.Control.Permalink();
set_map_config(perm);
@@ -11,9 +9,9 @@ YAHOO.util.Event.onContentReady('map', function() {
});
fixmystreet.layer_options = OpenLayers.Util.extend({
- zoomOffset: fixmystreet.ZOOM_OFFSET,
+ zoomOffset: fixmystreet.zoomOffset,
transitionEffect: 'resize',
- numZoomLevels: 5
+ numZoomLevels: fixmystreet.numZoomLevels
}, fixmystreet.layer_options);
var layer = new fixmystreet.map_type("", fixmystreet.layer_options);
fixmystreet.map.addLayer(layer);
diff --git a/web/js/map-bing-ol.js b/web/js/map-bing-ol.js
index 00c3a487f..c3c3b994e 100644
--- a/web/js/map-bing-ol.js
+++ b/web/js/map-bing-ol.js
@@ -1,5 +1,4 @@
function set_map_config(perm) {
- fixmystreet.ZOOM_OFFSET = 13;
fixmystreet.controls = [
new OpenLayers.Control.ArgParser(),
new OpenLayers.Control.Navigation(),