diff options
Diffstat (limited to 'perllib/FixMyStreet')
-rw-r--r-- | perllib/FixMyStreet/Cobrand/Default.pm | 2 | ||||
-rw-r--r-- | perllib/FixMyStreet/Map/FMS.pm | 2 | ||||
-rw-r--r-- | perllib/FixMyStreet/Map/Google.pm | 25 | ||||
-rw-r--r-- | perllib/FixMyStreet/Map/MasterMap.pm | 1 | ||||
-rw-r--r-- | perllib/FixMyStreet/Map/OSM.pm | 15 | ||||
-rw-r--r-- | perllib/FixMyStreet/Map/OSM/StreetView.pm | 2 |
6 files changed, 31 insertions, 16 deletions
diff --git a/perllib/FixMyStreet/Cobrand/Default.pm b/perllib/FixMyStreet/Cobrand/Default.pm index 82b3b7f45..2dfb0d7b1 100644 --- a/perllib/FixMyStreet/Cobrand/Default.pm +++ b/perllib/FixMyStreet/Cobrand/Default.pm @@ -1072,7 +1072,7 @@ sub can_support_problems { return 0; } =item default_map_zoom default_map_zoom is used when displaying a map overriding the -default of max-4 or max-3 depending on population density. +default that depends on population density. =cut diff --git a/perllib/FixMyStreet/Map/FMS.pm b/perllib/FixMyStreet/Map/FMS.pm index 1b556f6b3..53d911a57 100644 --- a/perllib/FixMyStreet/Map/FMS.pm +++ b/perllib/FixMyStreet/Map/FMS.pm @@ -9,6 +9,8 @@ use base 'FixMyStreet::Map::Bing'; use strict; +use constant ZOOM_LEVELS => 6; + sub map_template { 'fms' } sub map_javascript { [ diff --git a/perllib/FixMyStreet/Map/Google.pm b/perllib/FixMyStreet/Map/Google.pm index c1fb05e43..dfebef5a3 100644 --- a/perllib/FixMyStreet/Map/Google.pm +++ b/perllib/FixMyStreet/Map/Google.pm @@ -10,8 +10,9 @@ use strict; use FixMyStreet::Gaze; use Utils; -use constant ZOOM_LEVELS => 6; +use constant ZOOM_LEVELS => 7; use constant MIN_ZOOM_LEVEL => 13; +use constant DEFAULT_ZOOM => 3; sub map_javascript { [ "http://maps.googleapis.com/maps/api/js?sensor=false", @@ -28,16 +29,16 @@ sub display_map { my $numZoomLevels = ZOOM_LEVELS; my $zoomOffset = MIN_ZOOM_LEVEL; - if ($params{any_zoom}) { - $numZoomLevels = 19; - $zoomOffset = 0; - } # Adjust zoom level dependent upon population density - my $dist = $c->stash->{distance} - || FixMyStreet::Gaze::get_radius_containing_population( $params{latitude}, $params{longitude} ); - my $default_zoom = $c->cobrand->default_map_zoom() ? $c->cobrand->default_map_zoom() : $numZoomLevels - 4; - $default_zoom = $numZoomLevels - 3 if $dist < 10; + my $default_zoom; + if (my $cobrand_default_zoom = $c->cobrand->default_map_zoom) { + $default_zoom = $cobrand_default_zoom; + } else { + my $dist = $c->stash->{distance} + || FixMyStreet::Gaze::get_radius_containing_population( $params{latitude}, $params{longitude} ); + $default_zoom = $dist < 10 ? $self->DEFAULT_ZOOM : $self->DEFAULT_ZOOM - 1; + } # Map centre may be overridden in the query string $params{latitude} = Utils::truncate_coordinate($c->get_param('lat') + 0) @@ -46,6 +47,12 @@ sub display_map { if defined $c->get_param('lon'); $params{zoomToBounds} = $params{any_zoom} && !defined $c->get_param('zoom'); + if ($params{any_zoom}) { + $numZoomLevels += $zoomOffset; + $default_zoom += $zoomOffset; + $zoomOffset = 0; + } + my $zoom = defined $c->get_param('zoom') ? $c->get_param('zoom') + 0 : $default_zoom; $zoom = $numZoomLevels - 1 if $zoom >= $numZoomLevels; $zoom = 0 if $zoom < 0; diff --git a/perllib/FixMyStreet/Map/MasterMap.pm b/perllib/FixMyStreet/Map/MasterMap.pm index d66234bbf..5edbb28fb 100644 --- a/perllib/FixMyStreet/Map/MasterMap.pm +++ b/perllib/FixMyStreet/Map/MasterMap.pm @@ -8,6 +8,7 @@ use base 'FixMyStreet::Map::FMS'; use strict; use constant ZOOM_LEVELS => 7; +use constant DEFAULT_ZOOM => 4; sub map_template { 'fms' } diff --git a/perllib/FixMyStreet/Map/OSM.pm b/perllib/FixMyStreet/Map/OSM.pm index 47c1c8535..082605568 100644 --- a/perllib/FixMyStreet/Map/OSM.pm +++ b/perllib/FixMyStreet/Map/OSM.pm @@ -11,8 +11,9 @@ use Math::Trig; use FixMyStreet::Gaze; use Utils; -use constant ZOOM_LEVELS => 6; +use constant ZOOM_LEVELS => 7; use constant MIN_ZOOM_LEVEL => 13; +use constant DEFAULT_ZOOM => 3; sub map_type { 'OpenLayers.Layer.OSM.Mapnik' } @@ -76,10 +77,6 @@ sub generate_map_data { my $numZoomLevels = $self->ZOOM_LEVELS; my $zoomOffset = $self->MIN_ZOOM_LEVEL; - if ($params{any_zoom}) { - $numZoomLevels = 19; - $zoomOffset = 0; - } # Adjust zoom level dependent upon population density if cobrand hasn't # specified a default zoom. @@ -89,7 +86,13 @@ sub generate_map_data { } else { my $dist = $data->{distance} || FixMyStreet::Gaze::get_radius_containing_population( $params{latitude}, $params{longitude} ); - $default_zoom = $dist < 10 ? $numZoomLevels - 3 : $numZoomLevels - 4; + $default_zoom = $dist < 10 ? $self->DEFAULT_ZOOM : $self->DEFAULT_ZOOM - 1; + } + + if ($params{any_zoom}) { + $numZoomLevels += $zoomOffset; + $default_zoom += $zoomOffset; + $zoomOffset = 0; } my $zoom = $data->{zoom} || $default_zoom; diff --git a/perllib/FixMyStreet/Map/OSM/StreetView.pm b/perllib/FixMyStreet/Map/OSM/StreetView.pm index 3281faa35..820a3b87f 100644 --- a/perllib/FixMyStreet/Map/OSM/StreetView.pm +++ b/perllib/FixMyStreet/Map/OSM/StreetView.pm @@ -9,6 +9,8 @@ use base 'FixMyStreet::Map::OSM'; use strict; +use constant ZOOM_LEVELS => 6; + sub map_type { '' } sub map_javascript { [ |