This repository has been archived by the owner on Feb 21, 2024. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathoverlay.js
94 lines (74 loc) · 3.18 KB
/
overlay.js
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
var overlays = [];
var markers = [];
var map = null;
var currentOverlay = "all";
function addButtonFor(station, val) {
var template = document.getElementById("station-template");
var clone = template.cloneNode(true);
clone.classList.remove("hidden");
var button = clone.querySelector("button");
button.innerHTML = station;
button.addEventListener("click", selectOverlay.bind(undefined, val));
document.getElementById("station-table-body").appendChild(clone);
}
function addBlankRow() {
var template = document.getElementById("station-template");
var clone = template.cloneNode(true);
clone.classList.remove("hidden");
var button = clone.querySelector("button");
button.parentNode.removeChild(button);
document.getElementById("station-table-body").appendChild(clone);
}
function initialize() {
document.getElementById("date_start").innerHTML = first_position;
document.getElementById("date_end").innerHTML = last_position;
document.getElementById("num_pos").innerHTML = num_positions;
var absbounds = null;
addButtonFor("All coverage", "all");
addBlankRow();
addButtonFor("4+ station overlap", "4plus");
addButtonFor("5+ station overlap", "5plus");
addButtonFor("6+ station overlap", "6plus");
addButtonFor("Below 18000ft", "below18000");
addButtonFor("Below 10000ft", "below10000");
addButtonFor("Min altitude seen", "byalt");
addBlankRow();
// Create map
map = L.map('map-canvas');
// create the OSM tile layer
var osmUrl='https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png';
var osmAttrib='Map data <a href="https://openstreetmap.org">OpenStreetMap</a> contributors';
var osm = new L.TileLayer(osmUrl, {minZoom: 2, maxZoom: 20, attribution: osmAttrib});
// default map start position
map.setView(new L.LatLng(45, 10), 6);
// Add the OSM layer to the map
map.addLayer(osm);
var names = Object.keys(coverage).sort();
for (var i = 0; i < names.length; ++i) {
var k = names[i];
var s = coverage[k];
var bounds = new L.LatLngBounds(
new L.LatLng(s.min_lat, s.min_lon),
new L.LatLng(s.max_lat, s.max_lon));
overlays[k] = L.imageOverlay(s.image, bounds, { opacity : 1.0 });
if (s.lat !== null) {
// marker jitter is just to separate markers that would otherwise be overlapping
markers[k] = L.marker([s.lat + Math.random()*0.02-0.01, s.lon + Math.random()*0.02-0.01]).addTo(map).bindTooltip(k);
markers[k].on('click', selectOverlay.bind(undefined, k));
}
if (s.is_station) {
addButtonFor(k, k);
}
}
overlays['all'].addTo(map);
var absbounds = new L.LatLngBounds(new L.LatLng(coverage['all'].min_lat, coverage['all'].min_lon), new L.LatLng(coverage['all'].max_lat, coverage['all'].max_lon));
map.fitBounds(absbounds);
}
function selectOverlay(stationname) {
map.removeLayer(overlays[currentOverlay]);
if (currentOverlay === stationname) {
stationname = "all";
}
overlays[stationname].addTo(map);
currentOverlay = stationname;
}