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

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;

结果image

你可能感兴趣的:(html)