php计算两个经纬度之间的距离

QQ:1346883814


/**

    * 计算两坐标之间距离

    * vic优化版

    * @param double $lat1

    *            起点纬度

    * @param double $lng1

    *            起点经度

    * @param double $lat2

    *            终点纬度

    * @param double $lng2

    *            终点经度

    * @return float 米

    */

    function getDistance($lat1, $lng1, $lat2, $lng2,$Arr = array())

    {

          $dx = $lng1 - $lng2; // 经度差值

          $dy = $lat1 - $lat2; // 纬度差值

          $b = ($lat1 + $lat2) / 2.0; // 平均纬度

          $Lx = deg2rad($dx) * 6367000.0* cos(deg2rad($b)); // 东西距离

          $Ly = 6367000.0 * deg2rad($dy); // 南北距离

          return round(sqrt($Lx * $Lx + $Ly * $Ly));//'米'; // 用平面的矩形对角距离公式计算总距离

    }

/**

*计算某个经纬度的周围某段距离的正方形的四个点

*

*@param lng float 经度

*@param lat float 纬度

*@param distance float 该点所在圆的半径,该圆与此正方形内切,默认值为0.5千米

*@return array 正方形的四个点的经纬度坐标

*/

function returnSquarePoint($lng, $lat,$distance = 0.5){

      $dlng =  2 * asin(sin($distance / (2 * 6371)) / cos(deg2rad($lat)));

      $dlng = rad2deg($dlng);

      $dlat = $distance/6371;;

      $dlat = rad2deg($dlat);

      return array(

            'left-top'=>array('lat'=>$lat + $dlat,'lng'=>$lng-$dlng),

            'right-top'=>array('lat'=>$lat + $dlat, 'lng'=>$lng + $dlng),

            'left-bottom'=>array('lat'=>$lat - $dlat, 'lng'=>$lng - $dlng),

            'right-bottom'=>array('lat'=>$lat - $dlat, 'lng'=>$lng + $dlng)

        );

}

// //使用此函数计算得到结果后,带入sql查询。

// $squares = returnSquarePoint($lng, $lat);

// $info_sql = "select id,locateinfo,lat,lng from `lbs_info` where lat<>0 and lat>{$squares['right-bottom']['lat']} and lat<{$squares['left-top']['lat']} and lng>{$squares['left-top']['lng']} and lng<{$squares['right-bottom']['lng']} ";

你可能感兴趣的:(php计算两个经纬度之间的距离)