PHP根据经纬度计算距离

思路:

公式:

W为纬度对应的弧度,J为经度对应的弧度,如上图所示

下面代码  lat是纬度  lng是经度

/**
     * 根据经纬度算距离,返回结果单位是公里,先纬度,后经度
     * @param $lat1
     * @param $lng1
     * @param $lat2
     * @param $lng2
     * @return float|int
     */
    public function GetDistance($lat1, $lng1, $lat2, $lng2)
    {
        $EARTH_RADIUS = 6378.137;

        $radLat1 = $this->rad($lat1);
        $radLat2 = $this->rad($lat2);
        $a = $radLat1 - $radLat2;
        $b = $this->rad($lng1) - $this->rad($lng2);
        $s = 2 * asin(sqrt(pow(sin($a / 2), 2) + cos($radLat1) * cos($radLat2) * pow(sin($b / 2), 2)));
        $s = $s * $EARTH_RADIUS;
        $s = round($s * 10000) / 10000;

        return $s;
    }

    private function rad($d)
    {
        return $d * M_PI / 180.0;
    }

原文地址:https://www.cnblogs.com/lyc94620/p/9459592.html

时间: 2024-10-24 10:06:43

PHP根据经纬度计算距离的相关文章

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

这是一个不错的示例,直接贴代码,首先要知道纬度值.经度值 /** * @desc 根据两点间的经纬度计算距离 * @param float $lat 纬度值 * @param float $lng 经度值 */ function getDistance($lat1, $lng1, $lat2, $lng2) { $earthRadius = 6367000; //approximate radius of earth in meters /* Convert these degrees to r

记录两个函数--1.计算某个经纬度的周围某段距离的正方形的四个点。2.根据两点间的经纬度计算距离

前些日子在做手机网站开发的时候碰到这样一个需求,用某度地图的定位功能查看自己现在所在的位置,同时要显示出以自己为圆心,周围1000米以内的商家.功能很简单,拿到自己的经纬度,算出四个点的经纬度坐标,从数据库里拿出相对应的商家,显示在地图上即可,关键就是需要这么一个好用函数.还好找到了一个不错的,分享给大家,估计大家做到这一块的时候应该也会用到. /**  * 计算某个经纬度的周围某段距离的正方形的四个点  * 地球半径,平均半径为6371km  * @param lng float 经度  *

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

/** * @desc 根据两点间的经纬度计算距离 * @param float $lat 纬度值 * @param float $lng 经度值 */ function getDistance($lat1, $lng1, $lat2, $lng2) { $earthRadius = 6367000; $lat1 = ($lat1 * pi()) / 180; $lng1 = ($lng1 * pi()) / 180; $lat2 = ($lat2 * pi()) / 180; $lng2 =

由经纬度计算距离

前些天接触到一个由经纬度计算距离的算法,非常简明了哦. 怎奈进行操作的时候,却报出来类型错误的结果.后来经过分析,发现问题出在下面代码中的13行. /* 计算两个GPS点直线距离 结果单位:M 3 */ 4 public static double distance(double jingdu1, double weidu1, 5 double jingdu2, double weidu2) { 6 double theta = jingdu1 - jingdu2; 7 double dist

【转】根据两点经纬度计算距离

原文链接:根据两点经纬度计算距离 这些经纬线是怎样定出来的呢?地球是在不停地绕地轴旋转(地轴是一根通过地球南北两极和地球中心的假想线),在地球中腰画一个与地轴垂直的大圆圈,使圈上的每一点都和南北两极的距离相等,这个圆圈就叫作“赤道”.在赤道的南北两边,画出许多和赤道平行的圆圈,就是“纬圈”:构成这些圆圈的线段,叫做纬线.我们把赤道定为纬度零度,向南向北各为90度,在赤道以南的叫南纬,在赤道以北的叫北纬.北极就是北纬90度,南极就是南纬90度.纬度的高低也标志着气候的冷热,如赤道和低纬度地地区无冬

iOS经纬度计算距离

#pragma mark - calculate distance  根据2个经纬度计算距离      #define PI 3.1415926   +(double) LantitudeLongitudeDist:(double)lon1 other_Lat:(double)lat1 self_Lon:(double)lon2 self_Lat:(double)lat2{       double er = 6378137; // 6378700.0f;       //ave. radius

根据两点经纬度计算距离

这些经纬线是怎样定出来的呢?地球是在不停地绕地轴旋转(地轴是一根通过地球南北两极和地球中心的 假想线),在地球中腰画一个与地轴垂直的大圆圈,使圈上的每一点都和南北两极的距离相等,这个圆圈 就叫作“赤道”.在赤道的南北两边,画出许多和赤道平行的圆圈,就是“纬圈”:构成这些圆圈的线段, 叫做纬线.我们把赤道定为纬度零度,向南向北各为90度,在赤道以南的叫南纬,在赤道以北的叫北纬. 北极就是北纬90度,南极就是南纬90度.纬度的高低也标志着气候的冷热,如赤道和低纬度地地区无冬, 两极和高纬度地区无夏,

php有经纬度计算距离

/** *  @desc 根据两点间的经纬度计算距离 *  @param float $lat 纬度值 *  @param float $lng 经度值 */  function getDistance($lat1, $lng1, $lat2, $lng2)  {      $earthRadius = 6367000; //approximate radius of earth in meters      /*        Convert these degrees to radians

[转]根据两点经纬度计算距离

根据两点经纬度计算距离 这些经纬线是怎样定出来的呢?地球是在不停地绕地轴旋转(地轴是一根通过地球南北两极和地球中心的假想线),在地球中腰画一个与地轴垂直的大圆圈,使圈上的每一点都和南北两极的距离相等,这个圆圈就叫作“赤道”.在赤道的南北两边,画出许多和赤道平行的圆圈,就是“纬圈”:构成这些圆圈的线段,叫做纬线.我们把赤道定为纬度零度,向南向北各为90度,在赤道以南的叫南纬,在赤道以北的叫北纬.北极就是北纬90度,南极就是南纬90度.纬度的高低也标志着气候的冷热,如赤道和低纬度地地区无冬,两极和高

java工具类 六 根据经纬度计算距离

Java实现根据经纬度计算距离 在项目开发过程中,需要根据两地经纬度坐标计算两地间距离,所用的工具类如下: Demo1: public static double getDistatce(double lat1, double lat2, double lon1, double lon2) { double R = 6371; double distance = 0.0; double dLat = (lat2 - lat1) * Math.PI / 180; double dLon = (lo