All files / src/services/calculators DistanceCalculator.js

92.86% Statements 13/14
50% Branches 3/6
100% Functions 0/0
92.86% Lines 13/14
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29    1x 1x         100x   100x 100x 100x 100x 100x 100x 100x 100x 100x       100x            
'use es6';
 
import Distance from '../../data/Distance';
import DistanceUnit from '../../data/DistanceUnit';
 
export default class DistanceCalculator {
 
  // http://www.geodatasource.com/developers/javascript
  static calculateDistance(start, end, unit=DistanceUnit.MILE) {
 
    var radlat1 = Math.PI * start.latitude / 180;
    var radlat2 = Math.PI * end.latitude / 180;
    var theta = start.longitude - end.longitude;
    var radtheta = Math.PI * theta / 180;
    var dist = Math.sin(radlat1) * Math.sin(radlat2) + Math.cos(radlat1) * Math.cos(radlat2) * Math.cos(radtheta);
    dist = Math.acos(dist)
    dist = dist * 180 / Math.PI
    dist = dist * 60 * 1.1515
    Iif (unit==="KILOMETER") {
      dist *= 1.609344
    }
    
    return new Distance({
      value: dist,
      unit: unit,
    });
  }
}