专注于discuz,uchome,dedecms等各类PHP程序仿站(二次开发和模板制作)。

« »

php根据经纬度计算距离和方向

现在这个移动终端的天下,

自然而然就有了根据经纬度来计算方向和距离的需求,

LBS就产生了,

可是怎么计算呢 ?

网上有很多计算距离的,今天我就来个加强版,计算距离和方向。

 

//根据经纬度计算距离和方向

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;

}

码完手工,
写的粗糙,见谅。

php根据经纬度计算距离和方向 – DANGDANG-好图书.

原创文章如转载,请注明:转载自火跃工作室
本文网址:http://www.huoyue.org/php-latitude-longitude-distance-direction

日志信息 »

该日志于2013-01-22 11:23由 火跃 发表在PHP+mysql分类下, 你可以发表评论。除了可以将这个日志以保留源地址及作者的情况下引用到你的网站或博客,还可以通过RSS 2.0订阅这个日志的所有评论。

相关日志 »

没有评论

发表评论 »