码迷,mamicode.com
首页 > 移动开发 > 详细

php根据经纬度计算距离和方向--摘录自http://haotushu.sinaapp.com/post-520.html

时间:2015-01-20 23:36:31      阅读:229      评论:0      收藏:0      [点我收藏+]

标签:

define(‘EARTH_RADIUS‘, 6367000);//需定义的静态变量
function getRadian($d)

{

return $d * M_PI / 180;

}

function getDistance ($lat1, $lng1, $lat2, $lng2)

{

$lat1 =getRadian($lat1);

$lat2 = getRadian($lat2);

$a = $lat1 - $lat2;

$b = getRadian($lng1) - getRadian($lng2);

$v = 2 * asin(sqrt(pow(sin($a/2),2) +

cos($lat1) * cos($lat2) * pow(sin($b/2),2)));

$v = round(EARTH_RADIUS * $v * 10000) / 10000;

return $v;

}
//根据经纬度计算方向

function getDirection($lat1, $lng1, $lat2, $lng2){

$k1 = $lng2-$lng1;

$k2 = $lat2-$lat1;

if( 0 == $k1){

if($k2>0){

$str="聊友在您的正北方 ";

}

else if( $k2<0){

$str ="聊友在您的正南方 ";

}

else if( $k2 == 0){

$str="聊友正在您的附近 ";

}

}else if( 0 == $k2){

if($k1>0){

$str="聊友在您的正东方 ";

}

else if( $k1<0){

$str="聊友在您的正西方 ";

}

}else{

$k=$k2/$k1;

if($k2>0){

if($k1>0){

$angle = 180*atan($k)/M_PI;

$str="聊友在您的东偏北 $angle 度方向  ";

}else if($k1<0){

$angle = 180*atan(-$k)/M_PI;

$str= "聊友在您的西偏北 $angle 度方向  ";

}

}else if($k2<0){

if($k1<0){

$angle = 180*atan($k)/M_PI;

$str = "聊友在您的西偏南 $angle 度方向  ";

}

else if($k1>0){

$angle = 180*atan($k)/M_PI;

$str="聊友在您的东偏南 $angle 度方向  ";

}

}

}

return $str;

}
echo getDirection(40.770623,-73.964367,40.758224,-73.917404);

exit;

结果技术分享

php根据经纬度计算距离和方向--摘录自http://haotushu.sinaapp.com/post-520.html

标签:

原文地址:http://www.cnblogs.com/jdhu/p/4237637.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!