aboutsummaryrefslogtreecommitdiffstats
path: root/web/js/map-tilma-ol.js
blob: cfd196c1d9f163be33229c5d9149cb8d88ff86b3 (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
41
42
YAHOO.util.Event.onContentReady('map', function() {
    var map = new OpenLayers.Map("map", {
        controls: [
            new OpenLayers.Control.ArgParser(),
            new OpenLayers.Control.Navigation(),
            new OpenLayers.Control.PanPanel()
        ]
    });
    var tilma = new OpenLayers.Layer.Tilma("Tilma", {
        maxResolution: fixmystreet.maxResolution,
        tileSize: new OpenLayers.Size(fixmystreet.tilewidth, fixmystreet.tileheight),
        map_type: fixmystreet.tile_type
    });
    map.addLayer(tilma);

    var centre = new OpenLayers.LonLat( fixmystreet.easting, fixmystreet.northing );
    map.setCenter(centre);
});

OpenLayers.Layer.Tilma = OpenLayers.Class(OpenLayers.Layer.XYZ, {
    initialize: function(name, options) {
        var url = "http://tilma.mysociety.org/tileserver/${type}/${x},${y}/png";
        options = OpenLayers.Util.extend({
            transitionEffect: "resize",
            numZoomLevels: 1,
            units: "m",
            maxExtent: new OpenLayers.Bounds(0, 0, 700000, 1300000),
        }, options);
        var newArguments = [name, url, options];
        OpenLayers.Layer.XYZ.prototype.initialize.apply(this, newArguments);
    },

    getURL: function (bounds) {
        var res = this.map.getResolution();
        var x = Math.round(bounds.left / (res * this.tileSize.w));
        var y = Math.round(bounds.bottom / (res * this.tileSize.h));
        var path = OpenLayers.String.format(this.url, {'x': x, 'y': y, 'type': this.map_type});
        return path;
    },

    CLASS_NAME: "OpenLayers.Layer.Tilma"
});