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的更多相关文章

  1. iOS根据2个经纬度计算距离

    #pragma mark - calculate distance 根据2个经纬度计算距离 #define PI 3.14159265358979323 +(double) CalculationDi ...

  2. java工具类(六)根据经纬度计算距离

    Java实现根据经纬度计算距离 在项目开发过程中,需要根据两地经纬度坐标计算两地间距离,所用的工具类如下: Demo1: public static double getDistatce(double ...

  3. python的N个小功能(文本字段对应数值,经纬度计算距离,两个时间点计算时间间隔)

    案例1 >>> import pandas as pd >>> df=pd.DataFrame({'A':[1,2,3],'B':[1,2,3],'C':[1,2, ...

  4. php有经纬度计算距离

    /** *  @desc 根据两点间的经纬度计算距离 *  @param float $lat 纬度值 *  @param float $lng 经度值 */  function getDistanc ...

  5. PHP根据两点间的经纬度计算距离,php两点经纬度计算(转)

    这是一个不错的示例,直接贴代码,首先要知道纬度值.经度值 /** * @desc 根据两点间的经纬度计算距离 * @param float $lat 纬度值 * @param float $lng 经 ...

  6. MySQL创建根据经纬度计算距离的函数

    按照经纬度计算距离 日常开发中,特别是做微信项目时,经常会遇到根据用户地理位置来展示附近商家的功能,通常解决这种问题的思路是,后台设置商家的经纬度,然后再根据前台传的经纬度进行计算,具体经纬度转换以及 ...

  7. PHP根据两点间的经纬度计算距离

    /** * 说明: 根据两点间的经纬度计算距离 * @param float $lat 纬度值 * @param float $lng 经度值 */ function getDistance($lat ...

  8. cesium根据经纬度计算距离

    var startLatitude = 36;var startLongitude = 120; var endLatitude=34; var endLongitude=121; var start ...

  9. 【PHP】根据两地经纬度计算距离

    最近做一个H5活动的项目,有个要求是必须现场玩家才能参与,所以就需要计算玩家位置和活动地点的距离来判断是否在活动现场. 以下是写的一个根据经纬度计算两地距离的方法 1 function getDist ...

随机推荐

  1. SparkContext的初始化过程分析(源码)

     SparkContext的构造函数中,最重要的入参是SparkConf  根据初始化入参生成SparkConf 再根据SparkConf来创建SparkEnv TaskScheduler.start ...

  2. hdoj 1869 六度分离【最短路径求两两边之间最长边】

    六度分离 Time Limit: 5000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submis ...

  3. java中进程与线程--三种实现方式

    一:进程与线程 概述:几乎任何的操作系统都支持运行多个任务,通常一个任务就是一个程序,而一个程序就是一个进程.当一个进程运行时,内部可能包括多个顺序执行流,每个顺序执行流就是一个线程. 进程:进程是指 ...

  4. 大文件遍历shell脚本

    要求说明: 一.普通方法 无读写磁盘优化 有写磁盘优化 有读写磁盘优化 问题:脚本执行越来越慢 top ps aux vmstat 查看系统运行情况正常. 二.AWK 三.perl

  5. 【转】PyDev for Eclipse 简介

      转自:http://www.ibm.com/developerworks/cn/opensource/os-cn-ecl-pydev/index.html PyDev for Eclipse 是一 ...

  6. COCOS2D-X 精灵创建随笔

    CCSprite类中创建Sprite的方法都是静态的: static CCSprite* create ( )  创建一个无图片显示的精灵,可随后用 setTexture 方法设置显示图片 stati ...

  7. android 63 Fragment

    #Fragment 是3.0平板才引入进来的,3.0之后就加入了Fragment.原来是一个屏幕就是一个Activity,>片段,碎片 1. 定义某一个片段的界面 继承Fragment类 pub ...

  8. 局域网内使用linux的ntp服务

    假设我们的饿局域网无法连接外网,但又需要同步时间,怎么办? 1. 已局域网内的一台机器作为基础,适用date修改其他机器的时间,date -s ...,很不方便,这里不介绍. 2. 适用ntp服务,自 ...

  9. vi 使用笔记

    基本A 当前行追加J 去除本行和下一行之间的换行符(写CSS利器)~ 光标所在处的字符进行大小写互换* 向前搜索目前光标所在的单词# 向后搜索目前光标所在的单词% 查找与光标所在处相匹配的反括号, 包 ...

  10. sublime 2如何进入vim模式

    点击菜单栏[Preferences]——[Settings - Defaults] 查找: "ignored_packages": ["Vintage"] 改为 ...