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)
但它正在回归错误的坐标.谢谢!
非常感谢你.
正如已经指出的那样.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)
| 归档时间: |
|
| 查看次数: |
2525 次 |
| 最近记录: |