@@ -1083,8 +1083,9 @@ function updateCurrentPosition(lat, lon) {
10831083
10841084function 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
11321154function 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