• 经纬度相关方法


    本篇主要分享下经纬度相关的一些方法

    前段时间真的是太忙,用到的太多的方法什么都没有整理

    现整理部分自己使用过的方法,一是方便自己,二也是方便他人

    还有就是博客园最少也得保持一月更新一篇吧

    不多说了,分享相关方法:

    1判定经纬度是否正确

    /**
     * 经度判定是否合法
     */
    function islong($truename)
    {
        $preg = '/^-?((0|1?[0-8]?[0-9]?)(([.][0-9]{1,10})?)|180(([.][0]{1,10})?))$/';
        return (bool) preg_match($preg, $truename);
    }
    /**
     * 维度判定是否合法
     */
    function isdime($truename)
    {
        $preg = '/^-?((0|[1-8]?[0-9]?)(([.][0-9]{1,10})?)|90(([.][0]{1,10})?))$/';
        return (bool) preg_match($preg, $truename);
    }
    
    #使用方法
    if(!islong($long))
    {
        return '请输入正常的经度值';
    }
    if(!islong($dime))
    {
        return '请输入正常的纬度值';
    }

    // 中国国内的经纬度范围:

    // 经度:72.004 < x < 137.8347

    // 纬度:0.8293 < y < 55.8271

    该方法主要借鉴与以下两个博客

      大大博客 地址https://blog.csdn.net/ithanmang/article/details/86544418

    jeff151013  大大博客 地址https://www.cnblogs.com/jeff151013/p/11171995.html

    2.根据经纬度来获取两点对应距离

    /**
     * 计算两点地理坐标之间的距离
     * @param  Decimal $longitude1 起点经度
     * @param  Decimal $latitude1  起点纬度
     * @param  Decimal $longitude2 终点经度
     * @param  Decimal $latitude2  终点纬度
     * @param  Int     $unit       单位 1:米 2:公里
     * @param  Int     $decimal    精度 保留小数位数
     * @return Decimal
     */
    
    function getDistance($longitude1, $latitude1, $longitude2, $latitude2, $unit=2, $decimal=2)
    {
        $EARTH_RADIUS = 6370.996; // 地球半径系数
        $PI = 3.1415926;
    $radLat1 = $latitude1 * $PI / 180.0; $radLat2 = $latitude2 * $PI / 180.0; $radLng1 = $longitude1 * $PI / 180.0; $radLng2 = $longitude2 * $PI /180.0; $a = $radLat1 - $radLat2; $b = $radLng1 - $radLng2; $distance = 2 * asin(sqrt(pow(sin($a/2),2) + cos($radLat1) * cos($radLat2) * pow(sin($b/2),2))); $distance = $distance * $EARTH_RADIUS * 1000; if($unit==2){ $distance = $distance / 1000; } return round($distance, $decimal); }

    本方法借鉴方法地址未存储,望原文地址大佬看到勿怪

    另,在查找过程中看到的一个测试连接地址:https://www.nhc.noaa.gov/gccalc.shtml

    今天就暂时这么多吧

    2020年06月30日

  • 相关阅读:
    Linux下的”锁“事儿
    拿得起,放得下,想得开
    关于TCP协议握手的那些事儿

    C++中的RTTI机制解析
    C/C++中产生随机数
    数据库-事务和锁
    JS 数组Array常用方法
    C# 压缩 SharpZipLib
    正则表达式学习3-负向零宽断言
  • 原文地址:https://www.cnblogs.com/YFYQ/p/13215312.html
Copyright © 2020-2023  润新知