谷歌地图 - 近位置

时间:2010-08-30 12:46:07

标签: javascript sql google-maps distance

在我的网站上,会员正在Google Maps API上标记照片位置。经度和纬度保存在数据库(SQL)中。

有谁知道如何找到半径100公里标记照片的标记照片?

假设纬度和经度是46.03765154061627 | 14.5404052734375。是否有任何类型的数学公式可以检查100公里半径位置或任何其他方式?

谢谢!

3 个答案:

答案 0 :(得分:1)

您可以计算两点之间的great-circle distance。幸运的是,haversine formula相对容易,假设是地球的球形表示。您可能希望进一步阅读并查看Chris Veness在Calculate distance, bearing and more between Latitude/Longitude points的JavaScript实现。

如果您只有少量照片,则可以简单地计算从用户提交的点到每个照片点的大圆距离。然后简单地按距离对结果列表进行排序,并仅过滤距离低于100km阈值的照片。

但是,如果您要拍许多照片,您应该考虑从数据库中过滤这些照片。您可以使用具有geo-spatial indexing功能的数据库。例如,MySQLPostgreSQLSQL Server 2008都具有地理空间要素(本地或通过扩展),其中包括空间索引和半正公式的实现。

答案 1 :(得分:0)

Google Maps API包含处理纬度和经度坐标的方法。如果您正在处理少量坐标,则可以轻松使用其GLatLng类并调用distanceFrom方法。

您还可以使用GLatLngBounds,它旨在查看某些坐标是否在定义的矩形边界内。

答案 2 :(得分:0)

定义一个100km半径的圆可能有点复杂(大圆计算,两点之间的距离等)...用你的点定义100km(或200km)长度的“方形”更容易(M)在中间:

没有太科学,不能

  • 地球是一个球体(我知道它不是,但是......)
  • 在aequator的周长是ca. 40.000km - 所以100km的部分(经度)等于0.9°角度
  • 忽略了这样一个事实,即对于纬度而言,你越接近极点就会变化
  • 将0.9转为1度

我们可以说你想在其图片坐标(P)满足标准的区域内搜索图片

lon(M)-1 <= lon(P) <= lon(M)+1

lat(M)-1 <= lat(P) <= lat(M)+1

(全部以度为单位)。我认为 - 对于WEB服务 - 这是足够准确且非常容易实现。