Skip to content

Commit fa8861f

Browse files
inactive receivers are cleared from map, fix #28
1 parent 3b5b630 commit fa8861f

File tree

2 files changed

+29
-6
lines changed

2 files changed

+29
-6
lines changed

cache.manifest

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
CACHE MANIFEST
2-
# version 232
2+
# version 234
33

44
# gogole maps files
55
http://maps.google.com/maps/api/js?v=3.10&sensor=false&language=en_us&key=AIzaSyCOqkcNey4CCyG4X0X5qxHAhCgD8g5DwXg

js/tracker.js

Lines changed: 28 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1083,8 +1083,9 @@ function updateCurrentPosition(lat, lon) {
10831083

10841084
function updateReceiverMarker(receiver) {
10851085
var latlng = new google.maps.LatLng(receiver.lat, receiver.lon);
1086+
1087+
// init a marker if the receiver doesn't already have one
10861088
if(!receiver.marker) {
1087-
//icon.infoWindowAnchor = new google.maps.Point(13,3);
10881089
receiver.marker = new google.maps.Marker({
10891090
icon: {
10901091
url: host_url + markers_url + "antenna-green.png",
@@ -1108,32 +1109,54 @@ function updateReceivers(r) {
11081109
if(!r) return;
11091110
ls_receivers = true;
11101111

1111-
for(var i = 0, ii = r.length; i < ii; i++) {
1112+
var i = 0, ii = r.length;
1113+
for(; i < ii; i++) {
11121114
var lat = parseFloat(r[i].lat);
11131115
var lon = parseFloat(r[i].lon);
1116+
11141117
if(lat < -90 || lat > 90 || lon < -180 || lon > 180) continue;
1118+
11151119
var r_index = $.inArray(r[i].name, receiver_names);
1116-
var receiver = null;
1120+
11171121
if(r_index == -1) {
11181122
receiver_names.push(r[i].name);
11191123
r_index = receiver_names.length - 1;
11201124
receivers[r_index] = {marker: null};
11211125
}
1122-
receiver = receivers[r_index];
1126+
1127+
var receiver = receivers[r_index];
11231128
receiver.name = r[i].name;
11241129
receiver.lat = lat;
11251130
receiver.lon = lon;
11261131
receiver.alt = parseFloat(r[i].alt);
11271132
receiver.description = r[i].description;
1133+
receiver.fresh = true;
1134+
11281135
updateReceiverMarker(receiver);
1136+
}
1137+
1138+
// clear old receivers
1139+
var i = 0;
1140+
for(; i < receivers.length;) {
1141+
var e = receivers[i];
1142+
if(e.fresh) {
1143+
e.fresh = false;
1144+
i++;
1145+
}
1146+
else {
1147+
e.marker.setMap(null);
1148+
receivers.splice(i,1);
1149+
receiver_names.splice(i,1);
11291150
}
11301151
}
1152+
}
11311153

11321154
function updatePredictions(r) {
11331155
if(!r) return;
11341156
ls_pred = true;
11351157

1136-
for(var i = 0, ii = r.length; i < ii; i++) {
1158+
var i = 0, ii = r.length;
1159+
for(; i < ii; i++) {
11371160
var vehicle_index = $.inArray(r[i].vehicle, vehicle_names);
11381161
if(vehicle_index != -1) {
11391162
if(vehicles[vehicle_index].prediction && vehicles[vehicle_index].prediction.time == r[i].time) {

0 commit comments

Comments
 (0)