From b78b28d95f733631d97b74344f58d768239bf542 Mon Sep 17 00:00:00 2001 From: Oliver Jowett Date: Thu, 22 Jan 2015 14:17:12 +0000 Subject: [PATCH] Add a "follow" link to the selected plane info. --- public_html/gmap.html | 2 +- public_html/script.js | 33 ++++++++++++++++++++++++++------- 2 files changed, 27 insertions(+), 8 deletions(-) diff --git a/public_html/gmap.html b/public_html/gmap.html index 155d5fd..439cdb0 100644 --- a/public_html/gmap.html +++ b/public_html/gmap.html @@ -116,7 +116,7 @@ - Position: n/a + Position: n/a [ follow ⇒ ] diff --git a/public_html/script.js b/public_html/script.js index 294ab13..8d4fbee 100644 --- a/public_html/script.js +++ b/public_html/script.js @@ -5,6 +5,7 @@ var GoogleMap = null; var Planes = {}; var PlanesOrdered = []; var SelectedPlane = null; +var FollowSelected = false; var SpecialSquawks = { '7500' : { cssClass: 'squawk7500', markerColor: 'rgb(255, 85, 85)', text: 'Aircraft Hijacking' }, @@ -411,14 +412,22 @@ function initialize_map() { GoogleMap.mapTypes.set("dark_map", styledMap); // Listeners for newly created Map - google.maps.event.addListener(GoogleMap, 'center_changed', function() { - localStorage['CenterLat'] = GoogleMap.getCenter().lat(); - localStorage['CenterLon'] = GoogleMap.getCenter().lng(); - }); + google.maps.event.addListener(GoogleMap, 'center_changed', function() { + localStorage['CenterLat'] = GoogleMap.getCenter().lat(); + localStorage['CenterLon'] = GoogleMap.getCenter().lng(); + if (FollowSelected) { + // On manual navigation, disable follow + var selected = Planes[SelectedPlane]; + if (Math.abs(GoogleMap.getCenter().lat() - selected.position.lat()) > 0.0001 && + Math.abs(GoogleMap.getCenter().lng() - selected.position.lng()) > 0.0001) { + FollowSelected = false; + } + } + }); - google.maps.event.addListener(GoogleMap, 'zoom_changed', function() { - localStorage['ZoomLvl'] = GoogleMap.getZoom(); - }); + google.maps.event.addListener(GoogleMap, 'zoom_changed', function() { + localStorage['ZoomLvl'] = GoogleMap.getZoom(); + }); // Add home marker if requested if (SitePosition) { @@ -637,12 +646,16 @@ function refreshSelected() { if (selected.position === null) { $('#selected_position').text('n/a'); + $('#selected_follow').addClass('hidden'); } else { if (selected.seen_pos > 1) { $('#selected_position').text(format_latlng(selected.position) + " (" + selected.seen_pos + "s ago)"); } else { $('#selected_position').text(format_latlng(selected.position)); } + $('#selected_follow').removeClass('hidden'); + if (FollowSelected) + GoogleMap.panTo(selected.position); } $('#selected_sitedist').text(format_distance_long(selected.sitedist)); @@ -811,6 +824,12 @@ function selectPlaneByHex(hex) { SelectedPlane = null; } + FollowSelected = false; + refreshSelected(); +} + +function toggleFollowSelected() { + FollowSelected = !FollowSelected; refreshSelected(); }