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;
结果
php根据经纬度计算距离和方向--摘录自http://haotushu.sinaapp.com/post-520.html的更多相关文章
- iOS根据2个经纬度计算距离
#pragma mark - calculate distance 根据2个经纬度计算距离 #define PI 3.14159265358979323 +(double) CalculationDi ...
- java工具类(六)根据经纬度计算距离
Java实现根据经纬度计算距离 在项目开发过程中,需要根据两地经纬度坐标计算两地间距离,所用的工具类如下: Demo1: public static double getDistatce(double ...
- python的N个小功能(文本字段对应数值,经纬度计算距离,两个时间点计算时间间隔)
案例1 >>> import pandas as pd >>> df=pd.DataFrame({'A':[1,2,3],'B':[1,2,3],'C':[1,2, ...
- php有经纬度计算距离
/** * @desc 根据两点间的经纬度计算距离 * @param float $lat 纬度值 * @param float $lng 经度值 */ function getDistanc ...
- PHP根据两点间的经纬度计算距离,php两点经纬度计算(转)
这是一个不错的示例,直接贴代码,首先要知道纬度值.经度值 /** * @desc 根据两点间的经纬度计算距离 * @param float $lat 纬度值 * @param float $lng 经 ...
- MySQL创建根据经纬度计算距离的函数
按照经纬度计算距离 日常开发中,特别是做微信项目时,经常会遇到根据用户地理位置来展示附近商家的功能,通常解决这种问题的思路是,后台设置商家的经纬度,然后再根据前台传的经纬度进行计算,具体经纬度转换以及 ...
- PHP根据两点间的经纬度计算距离
/** * 说明: 根据两点间的经纬度计算距离 * @param float $lat 纬度值 * @param float $lng 经度值 */ function getDistance($lat ...
- cesium根据经纬度计算距离
var startLatitude = 36;var startLongitude = 120; var endLatitude=34; var endLongitude=121; var start ...
- 【PHP】根据两地经纬度计算距离
最近做一个H5活动的项目,有个要求是必须现场玩家才能参与,所以就需要计算玩家位置和活动地点的距离来判断是否在活动现场. 以下是写的一个根据经纬度计算两地距离的方法 1 function getDist ...
随机推荐
- POJ 3125 Printer Queue
题目: Description The only printer in the computer science students' union is experiencing an extremel ...
- AndroidHttp通信 HTTP Client与HttpURLConnection的区别
Apache HTTP Client DefaultHttpClient 以及其相关类AndroidHttpClient 适用于 web browsers, 他们是可扩展的,并且拥有大量的稳定APIs ...
- fiddler 抓包post请求body参数在jmeter中的书写
jmeter请求一直报错,最后查出来是请求参数的格式写错了,醉了 记录一下,以防我再次健忘 fidder抓包显示详情 jmeter 请求body data参数书写直接复制fiddler里TextVie ...
- apache启动目录(禁止目录)与设置默认入口文件的方法
设置默认入口文件的方法: 打开apache的conf目录,找到httpd.conf文件,打开这个文件,搜索dir_module,找到以下截图修改位置进行修改,注意重启apache服务器,修改位置才会生 ...
- Stackdump: 一个可以离线看stackoverflow的工具
博客搬到了fresky.github.io - Dawei XU,请各位看官挪步.最新的一篇是:Stackdump: 一个可以离线看stackoverflow的工具.
- chrome 插件 vimium 快捷键大全
DESCRIPTION vimium是一款让你在chrome浏览器能方便地使用键盘操作浏览器的插件.虽然和firefox相比还有些许不足(比如不能按到一些按钮之类的),但是vimium还是做到了能在9 ...
- 读取txt正则匹配行写入txt
StreamReader sr = new StreamReader("C:\\Users\\Administrator\\Desktop\\blogbbs\\dd.txt",En ...
- Ajax-$.ajax()方法详解
jquery中的ajax方法参数总是记不住,这里记录一下. 1.url: 要求为String类型的参数,(默认为当前页地址)发送请求的地址. 2.type: 要求为String类型的参数,请求方式(p ...
- Android菜单详解(四)——使用上下文菜单ContextMenu
之前在<Android菜单详解(二)——创建并响应选项菜单>和<Android菜单详解(三)——SubMenu和IconMenu>中详细讲解了选项菜单,子菜单和图标菜单.今天接 ...
- tcpreplay安装使用
#Author: ypguo#Data: 2010.4.23#Version: 1.2 增加了修改VLAN tag内容. 1.1 修改了cygwin下安装的内容 ...