aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--perllib/FixMyStreet/Map/Bing.pm4
-rw-r--r--perllib/FixMyStreet/Map/FMS.pm8
-rw-r--r--t/map/bing.t12
-rw-r--r--t/map/fms.t55
4 files changed, 73 insertions, 6 deletions
diff --git a/perllib/FixMyStreet/Map/Bing.pm b/perllib/FixMyStreet/Map/Bing.pm
index 4463b4ed2..723dcd6dc 100644
--- a/perllib/FixMyStreet/Map/Bing.pm
+++ b/perllib/FixMyStreet/Map/Bing.pm
@@ -39,8 +39,8 @@ sub display_map {
$self->SUPER::display_map($c, %params);
}
-my $road_base = '//t%s.ssl.ak.dynamic.tiles.virtualearth.net/comp/ch/%s?mkt=en-US&it=G,L&src=t&shading=hill&og=969&n=z';
-my $aerial_base = '//t%s.ssl.ak.dynamic.tiles.virtualearth.net/comp/ch/%s?mkt=en-US&it=A,G,L&src=t&og=969&n=z';
+my $road_base = '//%s.ssl.ak.dynamic.tiles.virtualearth.net/comp/ch/%s?mkt=en-US&it=G,L&src=t&shading=hill&og=969&n=z';
+my $aerial_base = '//%s.ssl.ak.dynamic.tiles.virtualearth.net/comp/ch/%s?mkt=en-US&it=A,G,L&src=t&og=969&n=z';
sub map_tiles {
my ( $self, %params ) = @_;
diff --git a/perllib/FixMyStreet/Map/FMS.pm b/perllib/FixMyStreet/Map/FMS.pm
index 246d04bc0..1b556f6b3 100644
--- a/perllib/FixMyStreet/Map/FMS.pm
+++ b/perllib/FixMyStreet/Map/FMS.pm
@@ -24,7 +24,9 @@ sub map_tiles {
my ( $self, %params ) = @_;
my ( $x, $y, $z ) = ( $params{x_tile}, $params{y_tile}, $params{zoom_act} );
my $ni = in_northern_ireland_box( $params{latitude}, $params{longitude} );
- if (!$ni && $z >= 16) {
+ if ($params{aerial} || $ni || $z <= 11) {
+ return $self->SUPER::map_tiles(%params);
+ } elsif ($z >= 16) {
my $tile_base = '//%stilma.mysociety.org/' . $self->map_tile_base . '/%d/%d/%d.png';
return [
sprintf($tile_base, 'a-', $z, $x-1, $y-1),
@@ -32,7 +34,7 @@ sub map_tiles {
sprintf($tile_base, 'c-', $z, $x-1, $y),
sprintf($tile_base, '', $z, $x, $y),
];
- } elsif (!$ni && $z > 11) {
+ } elsif ($z > 11) {
my $key = FixMyStreet->config('BING_MAPS_API_KEY');
my $base = "//ecn.%s.tiles.virtualearth.net/tiles/r%s?g=8702&lbl=l1&productSet=mmOS&key=$key";
return [
@@ -41,8 +43,6 @@ sub map_tiles {
sprintf($base, "t2", $self->get_quadkey($x-1, $y, $z)),
sprintf($base, "t3", $self->get_quadkey($x, $y, $z)),
];
- } else {
- return $self->SUPER::map_tiles(%params);
}
}
diff --git a/t/map/bing.t b/t/map/bing.t
new file mode 100644
index 000000000..ae8391871
--- /dev/null
+++ b/t/map/bing.t
@@ -0,0 +1,12 @@
+use Test::More;
+use FixMyStreet::Map::Bing;
+
+my $tiles = FixMyStreet::Map::Bing->map_tiles(x_tile => 8105, y_tile => 5375, zoom_act => 14);
+$tiles = [ map { m{ch/([^?]*)}; $1; } @$tiles ];
+is_deeply $tiles, [ '03131132323220', '03131132323221', '03131132323222', '03131132323223' ];
+
+$tiles = FixMyStreet::Map::Bing->map_tiles(x_tile => 8105, y_tile => 5375, zoom_act => 14, aerial => 1);
+$tiles = [ map { m{ch/([^?]*)\?.*A,G,L}; $1; } @$tiles ];
+is_deeply $tiles, [ '03131132323220', '03131132323221', '03131132323222', '03131132323223' ];
+
+done_testing();
diff --git a/t/map/fms.t b/t/map/fms.t
new file mode 100644
index 000000000..3a562db26
--- /dev/null
+++ b/t/map/fms.t
@@ -0,0 +1,55 @@
+use Test::More;
+use FixMyStreet::Map::FMS;
+
+# Z NI Aerial
+my $expected = {
+ 10 => {
+ 0 => {
+ 0 => 'ch/1010100100.*?=G,L',
+ 1 => 'ch/1010100100.*?A,G,L',
+ },
+ 1 => {
+ 0 => 'ch/1010100100.*?=G,L',
+ 1 => 'ch/1010100100.*?A,G,L',
+ },
+ },
+ 13 => {
+ 0 => {
+ 0 => 'r3131010100100.*?mmOS',
+ 1 => 'ch/3131010100100.*?A,G,L',
+ },
+ 1 => {
+ 0 => 'ch/3131010100100.*?=G,L',
+ 1 => 'ch/3131010100100.*?A,G,L',
+ },
+ },
+ 16 => {
+ 0 => {
+ 0 => 'oml/16/32420/21504',
+ 1 => 'ch/0313131010100100.*?A,G,L',
+ },
+ 1 => {
+ 0 => 'ch/0313131010100100.*?=G,L',
+ 1 => 'ch/0313131010100100.*?A,G,L',
+ },
+ },
+};
+
+subtest "Correct tiles with various parameters" => sub {
+ for my $aerial (0, 1) {
+ for my $ni (0, 1) {
+ for my $zoom (qw(10 13 16)) {
+ my $tiles = FixMyStreet::Map::FMS->map_tiles(
+ x_tile => 32421, y_tile => 21505, zoom_act => $zoom,
+ aerial => $aerial,
+ latitude => $ni ? 55 : 51,
+ longitude => $ni ? -6 : -2,
+ );
+ my $wanted = $expected->{$zoom}{$ni}{$aerial};
+ like $tiles->[0], qr/$wanted/, "with zoom $zoom, NI $ni, aerial $aerial";
+ }
+ }
+ }
+};
+
+done_testing();