在给定初始纬度、距离和方位的情况下,用php查找经纬度点

在给定初始纬度、距离和方位的情况下,用php查找经纬度点,php,google-maps,distance,bearing,Php,Google Maps,Distance,Bearing,在php中,给定一个纬度和经度点、一个方位(度)和一个距离(英尺或公里或其他单位),如何计算新的lat lng点是什么?这是我试过的,但它错了 function destinationPoint($lat, $lng, $brng, $dist) { $meters = $dist/3.2808399; // dist in meters $dist = $meters/1000; // dist in km $rad = 6371; // earths m

在php中,给定一个纬度和经度点、一个方位(度)和一个距离(英尺或公里或其他单位),如何计算新的lat lng点是什么?这是我试过的,但它错了

function destinationPoint($lat, $lng, $brng, $dist) {
      $meters = $dist/3.2808399; // dist in meters
      $dist =  $meters/1000; // dist in km
      $rad = 6371; // earths mean radius
      $dist = $dist/$rad;  // convert dist to angular distance in radians
      $brng = deg2rad($brng);  // conver to radians 
      $lat1 = deg2rad($lat); 
      $lon1 = deg2rad($lng);

      $lat2 = asin(sin($lat1)*cos($dist) + cos($lat1)*sin($dist)*cos($brng) );
      $lon2 = $lon1 + atan2(sin($brng)*sin($dist)*cos($lat1),cos($dist)-sin($lat1)*sin($lat2));
      $lon2 = ($lon2+3*M_PI) % (2*M_PI) - M_PI;  // normalise to -180..+180º
      $lat2 = rad2deg($lat2);
      $lon2 = rad2deg($lon2);


        echo "lat2 = ".$lat2."<br/>";
        echo "lon2 = ".$lon2."<br/>";
    }
功能目标点($lat、$lng、$brng、$dist){
$meters=$dist/3.2808399;//以米为单位的距离
$dist=$meters/1000;//以公里为单位的距离
$rad=6371;//地球平均半径
$dist=$dist/$rad;//将dist转换为以弧度为单位的角度距离
$brng=deg2rad($brng);//转换为弧度
$lat1=deg2rad($lat);
$lon1=deg2rad(液化天然气);
$lat2=asin(sin($lat1)*cos($dist)+cos($lat1)*sin($dist)*cos($brng));
$lon2=$lon1+atan2(sin($brng)*sin($dist)*cos($lat1),cos($dist)-sin($lat1)*sin($lat2));
$lon2=($lon2+3*M_-PI)%(2*M_-PI)-M_-PI;//标准化为-180..+180º
$lat2=rad2deg($lat2);
$lon2=rad2deg($lon2);
回显“lat2=”.$lat2。“
”; 回声“lon2=”.$lon2.“
”; }
只需更改

$lon2 = ($lon2+3*M_PI) % (2*M_PI) - M_PI;

根据,

模数的操作数在处理之前转换为整数(通过去除小数部分)

“[r]返回参数除法的浮点余数(模)。”

$lon2 = fmod($lon2 + 3*M_PI, 2*M_PI) - M_PI;