


This post represents my personal opinion; sometimes it makes sense, often not. I reserve the right to edit/delete offensive comments, but I wouldn't mind a couple of politically incorrect statements here and there.
Recently I’ve been doing alot of Google Maps stuff in flash, and have needed this more than once. This will give you the distance in miles or km between 2 Longitude and Latitude Points.
function getLatLngDistance($lat1:Number, $lng1:Number, $lat2:Number, $lng2:Number, $miles:Boolean=true):Number{ var pi80:Number = Math.PI/180; $lat1 *= pi80; $lng1 *= pi80; $lat2 *= pi80; $lng2 *= pi80; var earthRadius:Number = 6372.797; // mean radius of Earth in km var dlat:Number = $lat2-$lat1; var dlng:Number = $lng2-$lng1; var a:Number = Math.sin(dlat / 2) * Math.sin(dlat / 2) + Math.cos($lat1) * Math.cos($lat2) * Math.sin(dlng / 2) * Math.sin(dlng / 2); var c:Number = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a)); var km:Number = earthRadius*c; return ($miles ? (km * 0.621371192) : km); }
Hi Ryan,
Thanks a lot for posting this function!!!
now I don’t need to setup a mySql db, my stores are in an actionscript array.
THANKS :-),
Ariel
Great site and very great information!
“var c:Number = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));” can be simplified to “var c:Number = 2 * Math.asin(Math.sqrt(a));”
Perfect! Thanks for saving me some math, Ryan.