aboutsummaryrefslogtreecommitdiffstats
path: root/perllib/FixMyStreet/Map/MasterMap.pm
blob: d66234bbf5d6d488a82a990f8a0dd8df73aa975a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
# FixMyStreet:Map::MasterMap
#
# A combination of FMS OS maps and our own tiles

package FixMyStreet::Map::MasterMap;
use base 'FixMyStreet::Map::FMS';

use strict;

use constant ZOOM_LEVELS => 7;

sub map_template { 'fms' }

sub map_javascript { [
    '/vendor/OpenLayers/OpenLayers.wfs.js',
    '/js/map-OpenLayers.js',
    '/js/map-bing-ol.js',
    '/js/map-fms.js',
    '/js/map-mastermap.js',
] }

sub map_tiles {
    my ( $self, %params ) = @_;
    my ( $x, $y, $z ) = ( $params{x_tile}, $params{y_tile}, $params{zoom_act} );
    if ($z >= 17) {
        my $layer = FixMyStreet->config('STAGING_SITE') ? 'mastermap-staging' : 'mastermap';
        my $base = "//%stilma.mysociety.org/$layer/%d/%d/%d.png";
        return [
            sprintf($base, 'a.', $z, $x-1, $y-1),
            sprintf($base, 'b.', $z, $x, $y-1),
            sprintf($base, 'c.', $z, $x-1, $y),
            sprintf($base, '', $z, $x, $y),
        ];
    } else {
        return $self->SUPER::map_tiles(%params);
    }
}

1;