PDA

View Full Version : Calculate distance by Lat-Lon

sonny
10-11-2012, 03:57 AM
Hi
Can someone please check this, the miles do not seem right when I test it

function distance(\$lat1, \$lng1, \$lat2, \$lng2, \$miles = true){
\$pi80 = M_PI / 180;
\$lat1 *= \$pi80;
\$lng1 *= \$pi80;
\$lat2 *= \$pi80;
\$lng2 *= \$pi80;

\$r = 6372.797; // mean radius of Earth in km
\$dlat = \$lat2 - \$lat1;
\$dlng = \$lng2 - \$lng1;
\$a = sin(\$dlat / 2) * sin(\$dlat / 2) + cos(\$lat1) * cos(\$lat2) * sin(\$dlng / 2) * sin(\$dlng / 2);
\$c = 2 * atan2(sqrt(\$a), sqrt(1 - \$a));
\$km = \$r * \$c;

return (\$miles ? (\$km * 0.621371192) : \$km);
}
\$lat1 = "39.9289";//Beijing China
\$lon1 = "116.3883";

\$lat2 = "47.6026";//Seattle Washington
\$lon2 = "-122.3284";

\$distance = distance(\$lat1, \$lon1, \$lat2, \$lon2);
echo "They are ".\$distance." miles away from each other

sunfighter
10-11-2012, 05:41 PM
Your php gives me They are 5400.5810531334 miles away from each other

I used one from http://www.marketingtechblog.com/calculate-distance/ and got
5398.8 Miles.

http://www.freemaptools.com/how-far-is-it-between-seattle_washington-and-beijing_china.htm shows 5399.094 Miles.

Remember: A man with one GPS unit knows exactly where he is. A man with two units is never sure.

sonny
10-11-2012, 06:25 PM
Your php gives me They are 5400.5810531334 miles away from each other

I used one from http://www.marketingtechblog.com/calculate-distance/ and got
5398.8 Miles.

http://www.freemaptools.com/how-far-is-it-between-seattle_washington-and-beijing_china.htm shows 5399.094 Miles.

Remember: A man with one GPS unit knows exactly where he is. A man with two units is never sure.

I was just trying to double check the calculations within the script
Thanks
Sonny