在一定距离处查找经纬度四个方向的点

Posted

技术标签:

【中文标题】在一定距离处查找经纬度四个方向的点【英文标题】:Find points in four directions of a latitude and longitude at certain distance 【发布时间】:2021-11-17 00:11:53 【问题描述】:

我正在努力在一个位置周围显示四个指针(具有一定纬度和经度的指针),可以在地图上选择。

所以我从https://nominatim.org/ api 获取位置的纬度和经度值。我正在尝试从所选位置获取四点的纬度和经度值。这四个点距离当前点仅100米。

所以现在这里的问题是我如何计算或找到所选位置点的东、西、北和南点(距当前经纬度位置 100 米)。我已经检查了不同的选项,例如此处https://assemblysys.com/php-point-in-polygon-algorithm/ 的多边形算法中的点,或者尝试在所选点周围画一个圆,然后在该圆的圆周上获得四个点,但是问题仍然是我无法知道是否我得到的点是直接从所选位置。它是位置的东边,南边还是西边等。

对于确定某个点在所选点的哪个方向上的任何帮助表示赞赏。

【问题讨论】:

你是在 SQL 中实现这个吗?哪个供应商?如果这是一个与语言无关的问题,我想知道是否有更好的论坛。 @chegancasb 不,实现将在 JS/PHP 中,更正了标记。但我正在寻找的是一个一般提示,只需稍加修改即可在 JS/PHP 中使用。 【参考方案1】:

一旦您(或某人)在地图上选择了位置,您就会得到它的纬度和经度。假设它是:

lat = 44.78
lon = 20.45

然后,看看这个答案:Calculating new longitude, latitude from old + n meters。 它应该为您提供 100 米的距离,但作为纬度/经度偏移量。应用 SO 答案中的公式后,您将得到:

lat_offset = 0.0008983152841195215
lon_offset = 0.001265559599380766      // note that this lon_offset contains lat in formula (take a look at the link above)
                                       

最后,将计算结果应用到您的公式中:

west_lat = lat
west_lon = lon - lon_offset  

east_lat = lat
east_lon = lon + lon_offset

north_lat = lat + lat_offset
north_lon = lon

south_lat = lat - lat_offset
south_lon = lon  

注意:这些公式不适用于非常接近南极或北极的位置

【讨论】:

以上是关于在一定距离处查找经纬度四个方向的点的主要内容,如果未能解决你的问题,请参考以下文章

(译)计算距离方位和更多经纬度之间的点

性能 - 按纬度/经度查找特定距离内的所有点

我需要使用现有的纬度/经度、距离和方向来计算纬度/经度

使用经纬度查找距离的Sql返回错误的距离

Java,Mysql-根据一个给定经纬度的点,进行附近500米地点查询–合理利用算法

Android从定义的位置查找X点的纬度经度