Jump to content

Acars Map Weather and Clouds


Affix

Recommended Posts

Add the following to lib/js/acarsmap.js

var weatherLayer = new google.maps.weather.WeatherLayer({
 temperatureUnits: google.maps.weather.TemperatureUnit.FAHRENHEIT
});
weatherLayer.setMap(map);


var cloudLayer = new google.maps.weather.CloudLayer();
cloudLayer.setMap(map);

Link to comment
Share on other sites

  • 3 weeks later...

/**
* phpVMS - Virtual Airline Administration Software
* Copyright (c) 2008 Nabeel Shahzad
* For more information, visit www.phpvms.net
* Forums: http://www.phpvms.net/forum
* Documentation: http://www.phpvms.net/docs
*
* phpVMS is licenced under the following license:
* Creative Commons Attribution Non-commercial Share Alike (by-nc-sa)
* View license.txt in the root, or visit http://creativecommons.org/licenses/by-nc-sa/3.0/
*
* @author Nabeel Shahzad
* @copyright Copyright (c) 2008, Nabeel Shahzad
* @link http://www.phpvms.net
* @license http://creativecommons.org/licenses/by-nc-sa/3.0/
*
* Rewritten for Google Maps v3
*/
var flightMarkers = [];
var routeMarkers = [];
var flightPath = null;
var depMarker = null, arrMarker = null;
var info_window= null;
var run_once = false;

var defaultOptions = {
autozoom: true,
zoom: 4,
center: new google.maps.LatLng(-25.363882,131.044922),
mapTypeId: google.maps.MapTypeId.TERRAIN,
refreshTime: 12000,
autorefresh: true
};
var options = $.extend({}, defaultOptions, acars_map_defaults);
var map = new google.maps.Map(document.getElementById("acarsmap"), options);
var weatherLayer = new google.maps.weather.WeatherLayer({
temperatureUnits: google.maps.weather.TemperatureUnit.FAHRENHEIT
});
weatherLayer.setMap(map);

var cloudLayer = new google.maps.weather.CloudLayer();
cloudLayer.setMap(map);
// They clicked the map
google.maps.event.addListener(map, 'click', function()
{
//clearPreviousMarkers();
});
liveRefresh();
if(options.autorefresh == true)
{
setInterval(function () { liveRefresh(); }, options.refreshTime);
}
function liveRefresh()
{
$.ajax({
type: "GET",
url: url + "/action.php/acars/data",
dataType: "json",
cache: false,
success: function(data)
{
populateMap(data);
 }
});
};
function populateMap(data)
{
clearMap();
$("#pilotlist").html("");

if (data.length == 0) {
return false;
}
var lat, lng;
var details, row, pilotlink;
var bounds = new google.maps.LatLngBounds();

for (var i = 0; i < data.length; i++)
{
if(data[i] == null || data[i].lat == null || data[i].lng == null
 || data[i].lat == "" || data[i].lng == "")
{
continue;
 }

lat = data[i].lat;
lng = data[i].lng;

if(i%2 == 0)
data[i].trclass = "even";
else
data[i].trclass = "odd";

// Pull ze templates!
var map_row = tmpl("acars_map_row", {flight: data[i]});
var detailed_bubble = tmpl("acars_map_bubble", {flight: data[i]});

$('#pilotlist').append(map_row);

var pos = new google.maps.LatLng(lat, lng);
flightMarkers[flightMarkers.length] = new google.maps.Marker({
position: pos,
map: map,
icon: url+"/lib/images/inair/"+data[i].heading+".png",
flightdetails: data[i],
infowindow_content: detailed_bubble
});

bounds.extend(pos);

google.maps.event.addListener(flightMarkers[flightMarkers.length - 1], 'click', function()
{
clearPreviousMarkers();

var focus_bounds = new google.maps.LatLngBounds();
// Flight details info window
info_window = new google.maps.InfoWindow({
content: this.infowindow_content,
position: this.position
});

info_window.open(map, this);

// Add polyline, and start/end points
var dep_location = new google.maps.LatLng(this.flightdetails.deplat, this.flightdetails.deplng);
var arr_location = new google.maps.LatLng(this.flightdetails.arrlat, this.flightdetails.arrlng);

depMarker = new google.maps.Marker({
position: dep_location,
map: map,
icon: depicon,
title: this.flightdetails.depname,
zIndex: 100
});
arrMarker = new google.maps.Marker({
position: arr_location,
map: map,
icon: arricon,
title: this.flightdetails.arrname,
zIndex: 100
});

// Now the flight path, if it exists
var path = new Array();
path[path.length] = dep_location;
focus_bounds.extend(dep_location);
if(this.flightdetails.route_details.length > 0)
{
	 $.each(this.flightdetails.route_details, function(i, nav)
	 {
		 var loc = new google.maps.LatLng(nav.lat, nav.lng);

		 if(nav.type == 3)
			 icon = "icon_vor.png";
		 else
			 icon = "icon_fix.png";

		 var navpoint_info = tmpl("navpoint_bubble", {nav: nav});
		 routeMarkers[routeMarkers.length] = new google.maps.Marker({
		 position: loc,
		 map: map,
		 icon: url + "/lib/images/"+icon,
		 title: nav.title,
		 zIndex: 100,
		 infowindow_content: navpoint_info
		 });

		 google.maps.event.addListener(routeMarkers[routeMarkers.length - 1], 'click', function()
 {
	 info_window = new google.maps.InfoWindow({
	 content: this.infowindow_content,
	 position: this.position
	 });

	 info_window.open(map, this);
 });

		 path[path.length] = loc;
		 focus_bounds.extend(loc);
	 });
 }

path[path.length] = arr_location;
focus_bounds.extend(this.position);
focus_bounds.extend(arr_location);
flightPath = new google.maps.Polyline({
path: path,
strokeColor: "#FF0000", strokeOpacity: 1.0, strokeWeight: 2
});

map.fitBounds(focus_bounds);
flightPath.setMap(map);
});
}

// If they selected autozoom, only do the zoom first time
if(options.autozoom == true && run_once == false)
{
map.fitBounds(bounds);
run_once = true;
}
}
function clearPreviousMarkers()
{
if(info_window)
{
info_window.close();
info_window = null;
}

if(depMarker != null)
{
depMarker.setMap(null);
depMarker = null;
}

if(arrMarker != null)
{
arrMarker.setMap(null);
arrMarker = null;
}

if(routeMarkers.length > 0)
{
 for(var i = 0; i < routeMarkers.length; i++) {
routeMarkers[i].setMap(null);
}
}

routeMarkers.length = 0;

if(flightPath != null)
{
flightPath.setMap(null);
flightPath = null;
}
}
function clearMap()
{
if(flightMarkers.length > 0)
{
for(var i = 0; i < flightMarkers.length; i++) {
flightMarkers[i].setMap(null);
}
}

flightMarkers.length = 0;

if(routeMarkers.length > 0)
{
 for(var i = 0; i < routeMarkers.length; i++) {
routeMarkers[i].setMap(null);
}
}

routeMarkers.length = 0;
}

and you must put this:

<script type="text/javascript"
src="https://maps.googleapis.com/maps/api/js?libraries=weather&sensor=false">
</script>

in your acarsmap.tpl header

Link to comment
Share on other sites

  • 4 weeks later...
  • 3 weeks later...
  • 3 months later...

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...