【问题标题】:How to move x distance in any direction from geo coordinates?如何从地理坐标向任何方向移动 x 距离?
【发布时间】:2011-09-09 02:47:58
【问题描述】:

我正在使用 Google Places API 来获取某个地理位置附近的机构列表,我正在尝试弄清楚如何向北移动 1 公里并在那里获取地理坐标,然后再进行一次 Google API 调用。

理想情况下,我希望能够以任何距离进入任何方向并获得地理坐标。我从哪里开始?如果这不可能,请告诉我。

我什么也得不到。请看一看。我究竟如何使用方向。怎么往北走?

$lat = "40.712714";
$lon = "-74.005997";
$direction = "80";
$length="2000";

 move($lon, $lat, $direction, $length);


function move($cx,$cy,$direction,$length){
    $x=$cx*cos($direction*M_PI/180)+$length;
    $y=$cy*sin($direction*M_PI/180)+$length;
    return array($x,$y);
    echo $x;
    echo $y;
    }

编辑 我只是尝试手动更改坐标编号,它似乎做了我想要的。 比如我取这些坐标

40.717828,-73.998672

并更改了第 3 位十进制数。这将我的位置向北移动。

40.710828,-73.998672

【问题讨论】:

    标签: php geolocation geocoding


    【解决方案1】:

    所以我进行了一些调查。这是此函数的更正代码:

    function move($ylat,$xlng,$direction_degree,$length_degree){
        $x=$xlng+$length_degree*cos($direction_degree*M_PI/180);
        $y=$ylat+$length_degree*sin($direction_degree*M_PI/180);
        return array($x,$y);
    }
    
    var_dump(move(52.1,11.2,0,1)); //North 1 degree.
    

    但是,在您可以随意使用它之前,需要解决一些小问题。

    • 这个函数有距离单位度,所以你需要先将米转换成度。请注意,这会随纬度而变化。
    • 方向以度为单位,0 为北,90 东,180 南,270 西。
    • 我建议您从度数开始,然后最后进行米转换。到那时,您只需计算新旧坐标之间的距离(例如loceo.se/doc/distance

    【讨论】:

    • 我没有得到任何显示。你能看看我的示例代码吗?
    【解决方案2】:

    引自这篇维基百科文章GCS Wiki Article

    在赤道海平面的 GRS80 或 WGS84 球体上,一个 纬度秒是 30.715 米,一纬度分钟是 1843米,一纬度为110.6公里。这 经度圈,子午线,在地理两极相遇,与 一秒的东西向宽度随着纬度自然减小 增加。在海平面的赤道上,经度一秒 长 30.92 米,纵向分钟为 1855 米, 经度111.3公里。在 30° 纵向秒 是 26.76 米,在格林威治 (51° 28' 38" N) 19.22 米,在 60° 它是 15.42 米。

    【讨论】:

      猜你喜欢
      • 2018-01-18
      • 1970-01-01
      • 2017-12-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多