summaryrefslogtreecommitdiff
path: root/examples/cycleparkingheatmap.html
blob: 24e6fd1f0f87af22921a165edb048c840a6c027d (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
<!DOCTYPE html>
<html>
<head>
    <title>Cycle Parking Heat Map</title>
    <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">

    <link rel="stylesheet" href="../src/leaflet-soton.css" />

    <link rel="stylesheet" href="../resources/leaflet/dist/leaflet.css" />

    <style>
        body {
          padding: 0;
          margin: 0;
        }

        html, body, #map {
          height: 100%;
        }
    </style>
</head>
<body>
    <div id="map"></div>

    <script src="../resources/leaflet/dist/leaflet.js"></script>
    <script src="../resources/leaflet-heat/dist/leaflet-heat.js"></script>

    <script src="../src/leaflet-soton.js"></script>

    <script type="text/javascript">
        LS.imagePath = '../resources/images/';
        LS.dataPath = '../data.json';

        (function() {
            var map = LS.map('map', {
                indoor: false,
            });

            LS.getData(function(data) {
                var heatmapData = [];

                console.log(data);

                data.bicycleParking.features.forEach(function(feature) {
                    var lat,
                        lon;

                    if (feature.geometry.type === "Point") {
                        lat = feature.geometry.coordinates[1];
                        lon = feature.geometry.coordinates[0];
                    } else if (feature.geometry.type === "Polygon") {
                        lat = feature.geometry.coordinates[0][0][1];
                        lon = feature.geometry.coordinates[0][0][0];
                    }

                    if ("capacity" in feature.properties) {
                        for (var i=0; i<feature.properties.capacity; i++) {
                            heatmapData.push([lat, lon]);
                        }
                    } else {
                        heatmapData.push([lat, lon]);
                    }
                });

                var heat = L.heatLayer(heatmapData, {
                    radius: 20,
                    blur: 5,
                    gradient: {
                        0.4: 'green',
                        0.65: 'lime',
                        1: 'green'
                    }
                }).addTo(map);
            });
        })();
    </script>
</body>
</html>