diff --git a/webgui/topics/Map.html b/webgui/topics/Map.html index c3da0cf57..98932d018 100644 --- a/webgui/topics/Map.html +++ b/webgui/topics/Map.html @@ -1 +1,13 @@ -
\ No newline at end of file + diff --git a/webgui/topics/Map.js b/webgui/topics/Map.js index f2bc96a8e..f506d6900 100644 --- a/webgui/topics/Map.js +++ b/webgui/topics/Map.js @@ -4,6 +4,81 @@ define([ function ViewModel(params) { var self = this; + + self.overlays = { + "VFRMap.com Sectionals (US)" : new L.TileLayer('http://vfrmap.com/20140918/tiles/vfrc/{z}/{y}/{x}.jpg', { + maxZoom : 12, + minZoom : 3, + attribution : '(c) VFRMap.com', + tms : true, + opacity : 0.5, + bounds : L.latLngBounds(L.latLng(16.0, -179.0), L.latLng(72.0, -60.0)), + }), + + "VFRMap.com - Low IFR (US)" : new L.TileLayer('http://vfrmap.com/20140918/tiles/ifrlc/{z}/{y}/{x}.jpg', { + maxZoom : 12, + minZoom : 5, + attribution : '© VFRMap.com', + tms : true, + opacity : 0.5, + bounds : L.latLngBounds(L.latLng(16.0, -179.0), L.latLng(72.0, -60.0)), + }), + + "dfs.de VFR" : new L.TileLayer( + 'https://secais.dfs.de/static-maps/ICAO500-2014-DACH-Reprojected_01/tiles/{z}/{x}/{y}.png', { + minZoom : 5, + maxZoom : 15, + attribution : 'Map data © DFS', + bounds : L.latLngBounds(L.latLng(46.0, 5.0), L.latLng(55.1, 16.5)), + }), + + "Lower Airspace (Germany)" : new L.TileLayer('https://secais.dfs.de/static-maps/lower_20131114/tiles/{z}/{x}/{y}.png', + { + minZoom : 5, + maxZoom : 15, + attribution : 'Map data © DFS', + bounds : L.latLngBounds(L.latLng(46.0, 5.0), L.latLng(55.1, 16.5)), + }), + + "France VFR" : new L.TileLayer('http://carte.f-aero.fr/oaci/{z}/{x}/{y}.png', { + minZoom : 5, + maxZoom : 15, + attribution : 'Map data © F-AERO', + bounds : L.latLngBounds(L.latLng(41.0, -5.3), L.latLng(51.2, 10.1)), + }), + + "France VAC Landing" : new L.TileLayer('http://carte.f-aero.fr/vac-atterrissage/{z}/{x}/{y}.png', { + minZoom : 5, + maxZoom : 15, + attribution : 'Map data © F-AERO', + bounds : L.latLngBounds(L.latLng(41.0, -5.3), L.latLng(51.2, 10.1)), + }), + + "France VAC Approach" : new L.TileLayer('http://carte.f-aero.fr/vac-approche/{z}/{x}/{y}.png', { + minZoom : 5, + maxZoom : 15, + attribution : 'Map data © F-AERO', + bounds : L.latLngBounds(L.latLng(41.0, -5.3), L.latLng(51.2, 10.1)), + }), + + "Precipitation" : new L.TileLayer('http://{s}.tile.openweathermap.org/map/precipitation/{z}/{x}/{y}.png', { + maxZoom : 14, + minZoom : 0, + subdomains : '12', + format : 'image/png', + transparent : true, + opacity : 0.5 + }), + + "Isobares" : new L.TileLayer('http://{s}.tile.openweathermap.org/map/pressure_cntr/{z}/{x}/{y}.png', { + maxZoom : 7, + minZoom : 0, + subdomains : '12', + format : 'image/png', + transparent : true, + opacity : 0.5 + }), + } } ViewModel.prototype.dispose = function() { diff --git a/webgui/widgets/map.js b/webgui/widgets/map.js index 605e1855e..603b24909 100644 --- a/webgui/widgets/map.js +++ b/webgui/widgets/map.js @@ -31,16 +31,33 @@ define( $(self.element).css("min-height", $(self.element).width()); } - self.map = leaflet.map(self.element).setView([ + var MapOptions = { + attributionControl: false, + }; + + if( params && params.map ) { + for( var p in params.map ) { + MapOptions[p] = params.map[p]; + } + MapOptions = params.map; + } + + self.map = leaflet.map(self.element,MapOptions).setView([ 53.5, 10.0 - ], 13); - - var osmLayer = new leaflet.TileLayer('http://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png', { - maxZoom : 18, - attribution : 'Map data © OpenStreetMap contributors' - }); - self.map.addLayer(osmLayer); + ], MapOptions.zoom || 13); + var baseLayers = { + "OpenStreetMaps" : new leaflet.TileLayer('http://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png', { + maxZoom : 18, + attribution : 'Map data © OpenStreetMap contributors' + }) + } + self.map.addLayer(baseLayers["OpenStreetMaps"]); + + if( params && params.overlays ) { + L.control.layers(baseLayers, params.overlays).addTo(self.map); + } + L.RotatedMarker = L.Marker.extend({ options : { angle : 0