1. define('EARTH_RADIUS', 6367000);//需定义的静态变量
  2. function getRadian($d)
  3.  
  4. {
  5.  
  6. return $d * M_PI / 180;
  7.  
  8. }
  9.  
  10. function getDistance ($lat1, $lng1, $lat2, $lng2)
  11.  
  12. {
  13.  
  14. $lat1 =getRadian($lat1);
  15.  
  16. $lat2 = getRadian($lat2);
  17.  
  18. $a = $lat1 - $lat2;
  19.  
  20. $b = getRadian($lng1) - getRadian($lng2);
  21.  
  22. $v = 2 * asin(sqrt(pow(sin($a/2),2) +
  23.  
  24. cos($lat1) * cos($lat2) * pow(sin($b/2),2)));
  25.  
  26. $v = round(EARTH_RADIUS * $v * 10000) / 10000;
  27.  
  28. return $v;
  29.  
  30. }
  31. //根据经纬度计算方向
  32.  
  33. function getDirection($lat1, $lng1, $lat2, $lng2){
  34.  
  35. $k1 = $lng2-$lng1;
  36.  
  37. $k2 = $lat2-$lat1;
  38.  
  39. if( 0 == $k1){
  40.  
  41. if($k2>0){
  42.  
  43. $str="聊友在您的正北方 ";
  44.  
  45. }
  46.  
  47. else if( $k2<0){
  48.  
  49. $str ="聊友在您的正南方 ";
  50.  
  51. }
  52.  
  53. else if( $k2 == 0){
  54.  
  55. $str="聊友正在您的附近 ";
  56.  
  57. }
  58.  
  59. }else if( 0 == $k2){
  60.  
  61. if($k1>0){
  62.  
  63. $str="聊友在您的正东方 ";
  64.  
  65. }
  66.  
  67. else if( $k1<0){
  68.  
  69. $str="聊友在您的正西方 ";
  70.  
  71. }
  72.  
  73. }else{
  74.  
  75. $k=$k2/$k1;
  76.  
  77. if($k2>0){
  78.  
  79. if($k1>0){
  80.  
  81. $angle = 180*atan($k)/M_PI;
  82.  
  83. $str="聊友在您的东偏北 $angle 度方向 ";
  84.  
  85. }else if($k1<0){
  86.  
  87. $angle = 180*atan(-$k)/M_PI;
  88.  
  89. $str= "聊友在您的西偏北 $angle 度方向 ";
  90.  
  91. }
  92.  
  93. }else if($k2<0){
  94.  
  95. if($k1<0){
  96.  
  97. $angle = 180*atan($k)/M_PI;
  98.  
  99. $str = "聊友在您的西偏南 $angle 度方向 ";
  100.  
  101. }
  102.  
  103. else if($k1>0){
  104.  
  105. $angle = 180*atan($k)/M_PI;
  106.  
  107. $str="聊友在您的东偏南 $angle 度方向 ";
  108.  
  109. }
  110.  
  111. }
  112.  
  113. }
  114.  
  115. return $str;
  116.  
  117. }
  118. echo getDirection(40.770623,-73.964367,40.758224,-73.917404);
  119.  
  120. 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. HttpURLConnection的流式输出的缺陷和解决方法

    转自:http://www.mzone.cc/article/198.html 最近在用applet写文件上传控件的时候发现使用URLConnection来对服务器进行流式输出时的一些问题.我们通常要 ...

  2. 关于PHP开发的9条建议

    这篇文章主要介绍了关于PHP开发的9条建议,都是个人的一些经验总结,有需要的小伙伴可以参考下. 本文只是个人从实际开发经验中总结的一些东西,并不是什么名言警句,写出来有两个目的:一是时刻提醒自己要按照 ...

  3. java从mysql导出数据例子

    import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sq ...

  4. Bison executable not found in PATH by mysql install

    [root@luozhonghua mysql-5.5.21]# cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/mysql  -DMYSQL_DATADIR=/d ...

  5. Android框架之网络开发框架Volley

    1. Volley简单介绍 我们平时在开发Android应用的时候不可避免地都须要用到网络技术.而多数情况下应用程序都会使用HTTP协议来发送和接收网络数据.Android系统中主要提供了两种方式来进 ...

  6. fork和exec函数

    #include<unistd.h> pid_t fork(void); 返回:在子进程中为0,在父进程中为子进程IO,若出错则为- fork最困难之处在于调用它一次,它却返回两次.它在调 ...

  7. 调试php的soapServer

    用.NET的webservice做调试很轻松. 用soapserver的try和cacth获取不了多少信息

  8. DedeCMS文章标题前增加所属栏目名称链接

    问题描述:在调用文章标题的时候,我想实现这样的形式:“[国内新闻]站长无忧真的是一个不错的站”,其中“国内新闻”是标题的所属栏目,并且加链接:    解决方法: [field:typelink /]这 ...

  9. css3新增加的选择器

    css3新增加的选择器 一.属性选择器: E[attr] 只要有属性名E[attr=value] 属性名=属性值E[attr~=blue] 包含这个blue整个单词就可以E[attr^=c] 以这个字 ...

  10. 使用html5兼容低版本浏览器

    因为html5 新出的一些语义化的标签,在低版本浏览器下不能识别,举个例子,比如你写了一个 header 标签中,写了一段文本,在低版本浏览器下,肯定是能看到的,但是,那是他是不认识 header标签 ...