11
11
*
12
12
* Date: 2015-04-07T00:00Z
13
13
*/
14
+ $ ( '#playSatTrack' ) . click ( function ( e ) {
15
+ e . preventDefault ( ) ;
16
+ var polyline = L . polyline ( [ ] ) . addTo ( map ) ;
17
+ var satSocket = getSatelliteTrackFeed ( SAT_FEED ) ;
18
+ } ) ;
14
19
15
- function log ( msg ) {
20
+ function log ( msg ) {
16
21
if ( DEBUG_MODE )
17
22
$ ( "<p style='padding:0;margin:0;'>" + msg + "</p>" ) . appendTo ( "#dbg" ) ;
18
23
var d = $ ( '#dbg' ) ;
22
27
function getSatelliteTrackFeed ( feedSource ) {
23
28
// Query SOS Satellite Track Stream
24
29
try {
25
- var reader = new FileReader ( ) ;
26
- reader . onload = function ( ) {
27
- var rec = reader . result ;
28
- counter ++ ;
29
- if ( null !== rec ) {
30
- processWebSocketFeed ( rec ) ;
31
- var lla = ecef2lla ( ecef ) ;
32
- buildSatMarker ( lla ) ;
33
- }
34
- }
35
30
var ws = new WebSocket ( feedSource ) ;
36
31
ws . onmessage = function ( event ) {
37
- reader . readAsText ( event . data ) ;
32
+ processSocketOnMessage ( event ) ;
38
33
}
39
34
ws . onerror = function ( event ) {
40
35
ws . close ( ) ;
41
36
}
42
37
ws . onclose = function ( event ) {
43
- log ( "Number of data points received: " + counter ) ;
38
+ log ( "Number of data points received: " + -- counter ) ;
39
+ counter = 0 ;
44
40
satSocket = null ;
45
41
}
46
42
return ws ;
@@ -49,6 +45,20 @@ function getSatelliteTrackFeed(feedSource) {
49
45
}
50
46
} // getSatelliteTrackFeed
51
47
48
+ function processSocketOnMessage ( e ) {
49
+ var reader = new FileReader ( ) ;
50
+ reader . readAsBinaryString ( e . data ) ;
51
+ reader . onload = function ( ) {
52
+ var rec = reader . result ;
53
+ if ( null !== rec ) {
54
+ processWebSocketFeed ( rec ) ;
55
+ var lla = ecef2lla ( ecef ) ;
56
+ buildSatMarker ( lla ) ;
57
+ counter ++ ;
58
+ }
59
+ }
60
+ } //processSocketOnMessage()
61
+
52
62
function removeMarker ( thisMarker ) {
53
63
map . removeLayer ( thisMarker ) ;
54
64
thisMarker . update ( thisMarker ) ;
@@ -73,16 +83,28 @@ function interpretFeed(data, delimiter) {
73
83
74
84
function buildSatMarker ( data ) {
75
85
var s_lat = data [ 0 ] , s_long = data [ 1 ] , s_alt = data [ 2 ] , s_time = data [ 3 ] ;
76
-
77
86
if ( typeof s_lat === "undefined" || typeof s_long === "undefined" ) {
78
87
throw new Error ( "Latitude and/or Longitude is unavailable." ) ;
79
88
return ;
80
89
} /*Latitude or Longitude empty */ else {
81
- var satMarker = L . marker ( [ s_lat , s_long ] ,
82
- { icon : L . icon ( { iconUrl : 'satellite.png' ,
83
- iconSize : [ 16 , 16 ] , } ) } ) . addTo ( map )
84
- . bindPopup ( '<div id="pop-satMarker' + counter + '">Time: ' + formatDateTime ( s_time ) + '<br/>Latitude: ' + s_lat + '<br />Longitude: ' + s_long + '</div>' , { className : 'marker-popup' , closeButton : true } ) ;
85
- polyline . addLatLng ( L . latLng ( s_lat , s_long ) ) ;
90
+ if ( ! isNaN ( s_lat ) && ! isNaN ( s_long ) ) {
91
+ /*
92
+ var satMarker = L.marker([s_lat, s_long],
93
+ {icon: L.icon({ iconUrl: 'satellite.png',
94
+ iconSize: [16,16],})}).addTo(map)
95
+ .bindPopup('<div id="pop-satMarker' + counter + '">Time: ' + formatDateTime(s_time) + '<br/>Latitude: ' + s_lat + '<br />Longitude: ' + s_long + '</div>', { className: 'marker-popup' , closeButton: true});
96
+ polyline.addLatLng(L.latLng(s_lat, s_long));
97
+ */
98
+ if ( satMarker === null ) {
99
+ satMarker = L . marker ( [ s_lat , s_long ] ,
100
+ { icon : L . icon ( { iconUrl : 'satellite.png' ,
101
+ iconSize : [ 16 , 16 ] , } ) } ) . addTo ( map )
102
+ . bindPopup ( '<div id="pop-satMarker">Time: ' + formatDateTime ( s_time ) + '<br/>Latitude: ' + s_lat + '<br />Longitude: ' + s_long + '</div>' , { className : 'marker-popup' , closeButton : true } ) ;
103
+ } else {
104
+ satMarker . setLatLng ( [ s_lat , s_long ] ) ;
105
+ $ ( '#pop-satMarker' ) . html ( 'Time: ' + formatDateTime ( s_time ) + '<br/>Latitude: ' + s_lat + '<br />Longitude: ' + s_long ) ;
106
+ }
107
+ }
86
108
} // Got Latitude or Longitude
87
109
} // buildSatMarker
88
110
0 commit comments