diff --git a/htdocs/map.js b/htdocs/map.js index 8c9ea8c..3a0c0a8 100644 --- a/htdocs/map.js +++ b/htdocs/map.js @@ -342,17 +342,34 @@ $(function(){ delete infowindow.locator; delete infowindow.callsign; return infowindow; - } + }; var linkifyCallsign = function(callsign) { if ((callsign_url == null) || (callsign_url == '')) return callsign; else return '' + callsign + ''; }; + var distanceKm = function(p1, p2) { + // Earth radius in km + var R = 6371.0; + // Convert degrees to radians + var rlat1 = p1.lat() * (Math.PI/180); + var rlat2 = p2.lat() * (Math.PI/180); + // Compute difference in radians + var difflat = rlat2-rlat1; + var difflon = (p2.lng()-p1.lng()) * (Math.PI/180); + // Compute distance + d = 2 * R * Math.asin(Math.sqrt( + Math.sin(difflat/2) * Math.sin(difflat/2) + + Math.cos(rlat1) * Math.cos(rlat2) * Math.sin(difflon/2) * Math.sin(difflon/2) + )); + return Math.round(d); + }; + var infowindow; var showLocatorInfoWindow = function(locator, pos) { var infowindow = getInfoWindow(); @@ -364,8 +381,10 @@ $(function(){ }).sort(function(a, b){ return b.lastseen - a.lastseen; }); + var distance = receiverMarker? + " at " + distanceKm(receiverMarker.position, pos) + " km" : ""; infowindow.setContent( - '

Locator: ' + locator + '

' + + '

Locator: ' + locator + distance + '

' + '
Active Callsigns:
' + '