aboutsummaryrefslogtreecommitdiffstats
path: root/perllib/FixMyStreet/Map
diff options
context:
space:
mode:
authorMatthew Somerville <matthew-github@dracos.co.uk>2016-07-13 15:13:36 +0100
committerDave Arter <davea@mysociety.org>2016-08-01 11:52:22 +0100
commit0271c3fa016178f8c72b1192f1d0ed57437ec4c4 (patch)
tree1907ce9d863fb731a802ad0c2bc8065070d4eae4 /perllib/FixMyStreet/Map
parent8699a41fbeb79816d9852a2d1231ebd690cdd0ba (diff)
Add static map output view for a report.
Diffstat (limited to 'perllib/FixMyStreet/Map')
-rw-r--r--perllib/FixMyStreet/Map/OSM.pm31
1 files changed, 21 insertions, 10 deletions
diff --git a/perllib/FixMyStreet/Map/OSM.pm b/perllib/FixMyStreet/Map/OSM.pm
index ae9e73a0a..d4000f1a4 100644
--- a/perllib/FixMyStreet/Map/OSM.pm
+++ b/perllib/FixMyStreet/Map/OSM.pm
@@ -50,6 +50,23 @@ sub copyright {
sub display_map {
my ($self, $c, %params) = @_;
+ # Map centre may be overridden in the query string
+ $params{latitude} = Utils::truncate_coordinate($c->get_param('lat') + 0)
+ if defined $c->get_param('lat');
+ $params{longitude} = Utils::truncate_coordinate($c->get_param('lon') + 0)
+ if defined $c->get_param('lon');
+
+ my %data;
+ $data{cobrand} = $c->cobrand;
+ $data{distance} = $c->stash->{distance};
+ $data{zoom} = $c->get_param('zoom') + 0 if defined $c->get_param('zoom');
+
+ $c->stash->{map} = $self->generate_map_data(\%data, %params);
+}
+
+sub generate_map_data {
+ my ($self, $data, %params) = @_;
+
my $numZoomLevels = ZOOM_LEVELS;
my $zoomOffset = MIN_ZOOM_LEVEL;
if ($params{any_zoom}) {
@@ -58,18 +75,12 @@ sub display_map {
}
# Adjust zoom level dependent upon population density
- my $dist = $c->stash->{distance}
+ my $dist = $data->{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;
+ my $default_zoom = $data->{cobrand}->default_map_zoom() || ($numZoomLevels - 4);
$default_zoom = $numZoomLevels - 3 if $dist < 10;
- # Map centre may be overridden in the query string
- $params{latitude} = Utils::truncate_coordinate($c->get_param('lat') + 0)
- if defined $c->get_param('lat');
- $params{longitude} = Utils::truncate_coordinate($c->get_param('lon') + 0)
- if defined $c->get_param('lon');
-
- my $zoom = defined $c->get_param('zoom') ? $c->get_param('zoom') + 0 : $default_zoom;
+ my $zoom = $data->{zoom} || $default_zoom;
$zoom = $numZoomLevels - 1 if $zoom >= $numZoomLevels;
$zoom = 0 if $zoom < 0;
$params{zoom_act} = $zoomOffset + $zoom;
@@ -79,7 +90,7 @@ sub display_map {
($pin->{px}, $pin->{py}) = latlon_to_px($pin->{latitude}, $pin->{longitude}, $params{x_tile}, $params{y_tile}, $params{zoom_act});
}
- $c->stash->{map} = {
+ return {
%params,
type => $self->map_template(),
map_type => $self->map_type(),