Algorithm 显示距离用户lat/long在用户指定半径内的最近位置

Algorithm 显示距离用户lat/long在用户指定半径内的最近位置,algorithm,geolocation,latitude-longitude,Algorithm,Geolocation,Latitude Longitude,我在地图上工作,我需要显示离用户地理坐标最近的位置。这些最近的位置应在1km或用户指定的半径范围内 我没有运行查询并计算数据库中所有地理坐标的距离,而是通过选择country-state-city缩小了选择范围。然而,我仍然没有发现这种方式更有效 有人能给我建议解决这个问题的更好方法吗。如果您需要使用坐标快速且相当准确地估计距离,请参见此。您需要的是基于坐标的哈弗公式。您必须使用哈弗森线比较位置坐标和关注点之间的距离。然后,如果结果低于阈值(1km),则显示关注点 我建议您计算最大和最小纬度以及

我在地图上工作,我需要显示离用户地理坐标最近的位置。这些最近的位置应在1km或用户指定的半径范围内

我没有运行查询并计算数据库中所有地理坐标的距离,而是通过选择country-state-city缩小了选择范围。然而,我仍然没有发现这种方式更有效


有人能给我建议解决这个问题的更好方法吗。

如果您需要使用坐标快速且相当准确地估计距离,请参见此。

您需要的是基于坐标的哈弗公式。您必须使用哈弗森线比较位置坐标和关注点之间的距离。然后,如果结果低于阈值(1km),则显示关注点

我建议您计算最大和最小纬度以及最大和最小经度,以便所有纬度和经度均在各自的最小和最大纬度之间的点位于以当前点为中心的2km x 2km正方形中。然后,您可以运行查询来选择最接近的地质点。要做到这一点,你需要计算出公里和纬度的比率,以及公里和经度的比率。答案是

1 degree of latitude  = 6371000 * Math.PI / 180  metres 
1 degree of longitude = Cos(Latitude) * 6371000 * Math.PI / 180  metres

因为6371000是以米为单位的平均地球半径。有些点(即在正方形的拐角处)距离会超过1km,但是如果答案需要精确,您可以计算出该正方形内每个点的精确距离。注意:很多余弦函数都采用弧度而不是度,所以请确保单位正确

对于如此小的距离(1公里),你可以使用平坦的地球方程,而不是哈弗森方程。我不理解你的观点,你做了2公里x2公里。你能更笼统地解释一下吗。感谢2公里x 2公里,当前点位于中心意味着广场的每一侧距离当前点1公里。这有意义吗?