Javascript 谷歌地图-近位置

Javascript 谷歌地图-近位置,javascript,sql,google-maps,distance,Javascript,Sql,Google Maps,Distance,在我的网站上,会员们正在谷歌地图API上标记照片位置。经度和纬度保存在数据库(SQL)中 有人知道如何找到半径为100公里的标记照片吗 假设纬度和经度为46.03765154061627 | 14.5404052734375。是否有任何数学公式可以检查100公里半径的位置或任何其他方式 谢谢大家! 您可以计算两点之间的距离。幸运的是,假设地球是球形的,这相对容易。您可能需要进一步阅读并查看Chris Vensity提供的JavaScript实现 如果您只有少量照片,您可以简单地计算从用户提交的点

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

有人知道如何找到半径为100公里的标记照片吗

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

谢谢大家!

您可以计算两点之间的距离。幸运的是,假设地球是球形的,这相对容易。您可能需要进一步阅读并查看Chris Vensity提供的JavaScript实现

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

但是,如果你有很多照片,你应该考虑从数据库中过滤这些照片。您可以使用具有以下功能的数据库。例如,和都具有地理空间特征(本地或通过扩展),其中包括空间索引和哈弗森公式的实现。

您可以计算两点之间的距离。幸运的是,假设地球是球形的,这相对容易。您可能需要进一步阅读并查看Chris Vensity提供的JavaScript实现

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


但是,如果你有很多照片,你应该考虑从数据库中过滤这些照片。您可以使用具有以下功能的数据库。例如,和都具有地理空间特征(本地或通过扩展),其中包括空间索引和哈弗森公式的实现。

谷歌地图API包括处理纬度和经度坐标的方法。如果您处理的是少量坐标,那么使用它的类并调用该方法将很容易


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

谷歌地图API包括处理纬度和经度坐标的方法。如果您处理的是少量坐标,那么使用它的类并调用该方法将很容易


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

定义一个半径为100km的圆可能有点复杂(大圆计算、两点之间的距离等)。。。定义长度为100公里(或200公里)的“方形”更容易,点(M)位于中间:

在不太科学的情况下

  • 地球是一个球体(我知道它不是,但是…)
  • aequator的周长约为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

lon(M)-1定义半径为100km的圆可能有点复杂(大圆计算、两点之间的距离等)。。。定义长度为100公里(或200公里)的“方形”更容易,点(M)位于中间:

在不太科学的情况下

  • 地球是一个球体(我知道它不是,但是…)
  • aequator的周长约为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

lon(M)-1请注意,
distanceFrom()
方法仅在v2 API中可用,现在已弃用。v3 API没有实现等效的方法,必须自己实现:。幸运的是,这不是一个困难的实现。请注意,
distanceFrom()
方法仅在v2 API中可用,该方法现在已被弃用。v3 API没有实现等效的方法,必须自己实现:。幸运的是,这不是一个困难的实现。正如@Brendan所建议的,GoogleMapsAPI还提供了
LatLngBounds。contains()
测试坐标是否位于矩形边界的方法:correct。。。如果您允许用户放大和缩小地图,您可能希望动态显示更多或更少的图片,因此您的矩形区域会发生变化。GMap2.getBounds()方法将告诉您用户当前正在查看的确切区域()-因此,在任何情况下-如果目标是在矩形窗口中显示某些内容,则可以通过查看lon/lat来制定DB查询,而无需复杂的球形计算。谢谢大家的帮助,我想我已经找到了解决问题的方法:@Uroš:是的,您提到的文章正在SQL中实现。这种方法唯一的问题是,如果您有数千张照片,那么速度会非常慢,因为数据库必须进行完整的表扫描才能得到结果。这就是为什么我在回答中建议使用空间索引。然而,如果你只有很少的照片,那就足够了:)我的数据库现在有超过60000张照片,只有35张是地理标记的。但在未来,我认为我的许多成员将开始使用地理标记,也许空间索引将得到帮助;)谢谢!;)正如@Brendan所建议的,谷歌地图API还提供