aboutsummaryrefslogtreecommitdiffstats
path: root/web/js/map-wmts-zurich.js
blob: 058938cd4d6451b9069f0ddba4b724adfaf6610a (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
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
/* 
 * Maps for FMZ using Zurich council's WMTS tile server 
 */

/* 
 * set_map_config() is called on dom ready in map-OpenLayers.js
 * to setup the way the map should operate.
 */
 function set_map_config(perm) {
    // This stuff is copied from js/map-bing-ol.js
    // var permalink_id;
    // if ($('#map_permalink').length) {
    //     permalink_id = 'map_permalink';
    // }

    // var nav_opts = { zoomWheelEnabled: false };
    // if (fixmystreet.page == 'around' && $('html').hasClass('mobile')) {
    //     nav_opts = {};
    // }
    // fixmystreet.nav_control = new OpenLayers.Control.Navigation(nav_opts);

    // fixmystreet.controls = [
    //     new OpenLayers.Control.Attribution(),
    //     new OpenLayers.Control.ArgParser(),
    //     fixmystreet.nav_control,
    //     new OpenLayers.Control.Permalink(permalink_id),
    //     new OpenLayers.Control.PanZoomFMS({id: 'fms_pan_zoom' })
    // ];
    // if (fixmystreet.map_type) {
    //     tile_base = fixmystreet.map_type;
    // }

    fixmystreet.map_type = OpenLayers.Layer.WMTS;

    // Set DPI - default is 72
    OpenLayers.DOTS_PER_INCH = 96;

    // tell the main code to run our function instead
    // of setting the map up itself
    fixmystreet.map_setup = init_zurich_map;
}

/* 
 * Copied from Mark/Matthew's demo of using Zurich's layers
 */
function init_zurich_map(after) {

    fixmystreet.map = new OpenLayers.Map('map', {
        projection: new OpenLayers.Projection("EPSG:21781"),
        displayProjection: new OpenLayers.Projection("EPSG:21781"),
        maxExtent: new OpenLayers.Bounds(676000,241000,690000,255000),
        units: 'm',
        scales: [ '250000', '125000', '64000', '32000', '16000', '8000', '4000', '2000', '1000', '500']
    });

    var format = new OpenLayers.Format.WMTSCapabilities();

    jQuery.support.cors = true;

    jQuery.get("cobrands/zurich/Zurich-WMTSCapabilities.xml",
        '',
        function (data, textStatus, jqXHR) {

            var layer, centre;
            var capabilities = format.read(data);

            layer = format.createLayer(capabilities, {
                // added by me
                isBaseLayer: true,

                // Mark/Matthew's
                layer: "Luftbild",
                matrixSet: "default028mm",
		        // matrixSet: "nativeTileMatrixSet",
		        requestEncoding: "REST",
                isBaseLayer: true
            });
            // For some reason with OpenLayers 2.11 the format
            // returns a KVP url not a REST one, despite the settings
            // we have above, so for now I'm hardcoding the right one
            //layer.url = layer.url.replace('arcgis/rest/services/', '');
            layer.url = "http://www.wmts.stadt-zuerich.ch/Luftbild/MapServer/WMTS/tile/";

            fixmystreet.map.addLayer(layer);

            centre = new OpenLayers.LonLat( fixmystreet.longitude, fixmystreet.latitude );
            centre.transform(
                new OpenLayers.Projection("EPSG:4326"),
                fixmystreet.map.getProjectionObject(),
                7
            );
            fixmystreet.map.setCenter(centre);

            // Call the after callback
            after();
      },
      'xml');
}