Advertisement
maneesf

Haversine formula

Mar 4th, 2022 (edited)
1,193
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. function toRad(x){
  2.  return (x * Math.PI / 180);
  3. }
  4.  
  5. function calculateDistance(userAddress, providerAddress){
  6.  
  7.   if(providerAddress && userAddress){
  8.     const lon1 = providerAddress.lat;
  9.     const lat1 = providerAddress.lng;
  10.  
  11.     const lon2 = userAddress.lat;
  12.     const lat2 = userAddress.lng;
  13.  
  14.     const R = 6371;
  15.  
  16.     const x1 = lat2 - lat1;
  17.     const dLat = toRad(x1);
  18.     const x2 = lon2 - lon1;
  19.     const dLon = toRad(x2)
  20.     const angle = Math.sin(dLat / 2) * Math.sin(dLat / 2) +
  21.       Math.cos(toRad(lat1)) * Math.cos(toRad(lat2)) *
  22.       Math.sin(dLon / 2) * Math.sin(dLon / 2);
  23.     const arc = 2 * Math.atan2(Math.sqrt(angle), Math.sqrt(1 - angle));
  24.     const distance = R * arc;
  25.  
  26.     return Math.ceil(distance || 0);
  27.   }
  28.   return 0;
  29. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement