diff options
author | Matthew Somerville <matthew-github@dracos.co.uk> | 2016-07-13 15:13:36 +0100 |
---|---|---|
committer | Dave Arter <davea@mysociety.org> | 2016-08-01 11:52:22 +0100 |
commit | 0271c3fa016178f8c72b1192f1d0ed57437ec4c4 (patch) | |
tree | 1907ce9d863fb731a802ad0c2bc8065070d4eae4 /perllib/FixMyStreet/Map/OSM.pm | |
parent | 8699a41fbeb79816d9852a2d1231ebd690cdd0ba (diff) |
Add static map output view for a report.
Diffstat (limited to 'perllib/FixMyStreet/Map/OSM.pm')
-rw-r--r-- | perllib/FixMyStreet/Map/OSM.pm | 31 |
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(), |