向地图点添加公里数

pro*_*hom 7 php points latitude-longitude

早上好.

我想知道如何向地图点(纬度/经度)添加公里数.

例如:JaraguádoSul市位于北纬-26.462049,东经-49.059448.我想向上,向下和侧面增加100公里.我想做一个广场并获得新的积分.

我怎么做?

我尝试过这个:

<?php
$distance = 100;
$earthRadius = 6371;
$lat1 = -26.4853239150483;
$lon1 = -49.075927734375;
$bearing = 0;

$lat2 = asin(sin($lat1) * cos($distance / $earthRadius) + cos($lat1) * sin($distance / $earthRadius) * cos($bearing));
$lon2 = $lon1 + atan2(sin($bearing) * sin($distance / $earthRadius) * cos($lat1), cos($distance / $earthRadius) - sin($lat1) * sin($lat2));

echo 'LAT: ' . $lat2 . '<br >';
echo 'LNG: ' . $lon2;
?>
Run Code Online (Sandbox Code Playgroud)

但它正在回归错误的坐标.谢谢!

非常感谢你.

thr*_*rau 7

正如已经指出的那样.PHP三角函数将弧度视为参数.

度数的弧度转换将起到作用.你可能想要以度为单位的结果,所以使用rad2deg转换回来:

<?php
$distance = 100;
$earthRadius = 6371;
$lat1 = deg2rad(-26.4853239150483);
$lon1 = deg2rad(-49.075927734375);
$bearing = deg2rad(0);

$lat2 = asin(sin($lat1) * cos($distance / $earthRadius) + cos($lat1) * sin($distance / $earthRadius) * cos($bearing));
$lon2 = $lon1 + atan2(sin($bearing) * sin($distance / $earthRadius) * cos($lat1), cos($distance / $earthRadius) - sin($lat1) * sin($lat2));

echo 'LAT: ' . rad2deg($lat2) . '<br >';
echo 'LNG: ' . rad2deg($lon2);
?>
Run Code Online (Sandbox Code Playgroud)