zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    写在开篇——过往总结
    线程池原理实现
    MD5加密工具类
    跨域及jsonp
    四种xml的解析方式
    浅析正则表达式—(原理篇)
    用JavaScript添加选择按钮的背景颜色和juqery添加选择按钮的背景色
    怎么用JavaScript实现tab切换
    vue.js2.0:如何搭建开发环境及构建项目
    vscode如何用浏览器预览运行html文件
  • 原文地址:https://www.cnblogs.com/jdhu/p/4237637.html
Copyright © 2011-2022 走看看