【问题标题】:Searching record within latitude and longitude range搜索经纬度范围内的记录
【发布时间】:2014-02-17 09:11:40
【问题描述】:

嗨,我正在使用这张地图

https://google-developers.appspot.com/maps/articles/mvcfun/step6

我可以获得所需位置的纬度和经度,也可以获得距离(半径)。所以我有一个数据库,其中我的每条记录都有纬度和经度。我想在地图上选择的范围内搜索记录。 sql 查询将如何工作?

为了更好地解释我的每条记录都有纬度和经度。用户将选择地图,我想搜索所选范围内的记录。

【问题讨论】:

  • 获取从你的点到每条记录的距离,如果它在你的半径范围内意味着小于你的半径显示它。
  • 你知道你想做什么。你写的查询是什么?
  • @SatishSharma - geode 上的距离计算是什么?以及如何避免对每个查询进行全表扫描?
  • @MatBailie 距离可以通过两点之间距离的简单数学计算。是的,它会因为获取每条记录并计算距离而减慢该过程。
  • @MatBailie bro 我想和你讨论一下,如果我们使用它的程序。我们可以用它吗?它会提高性能吗?

标签: php sql google-maps


【解决方案1】:

我一直这样做的方法是使用maps api用所需的半径画一个圆,找到这个圆的经纬度边界,然后查询数据库:

SELECT * FROM yourtable WHERE lat BETWEEN a AND c AND lng between b AND  d

a 和 b 是左上角坐标,c 和 d 是右下角坐标。 (more information available here).

现在您的边界框内已包含所有对象,您需要将它们传回前端并确定它们是否在您的半径范围内。 See this answer for more information.

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-08
    • 2011-05-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-05
    相关资源
    最近更新 更多