【问题标题】:show restaurants within 100 miles显示 100 英里内的餐厅
【发布时间】:2011-07-11 15:23:22
【问题描述】:

我有一个包含所有纬度和经度值的主邮政编码表 tbl_zipcode。还有一张带有邮政编码的餐厅列表的餐厅表。

现在我想显示距离用户位置(即会话用户)100 英里内的餐厅。如何编写返回 100 英里内所有餐厅的函数?

任何帮助表示赞赏!
谢谢。

【问题讨论】:

  • 您需要向我们证明您尝试了一些方法来解决您的问题。否则看起来你懒得解决你的问题。
  • 这个问题太开放了。您是在询问如何构建这样的系统吗?如何对结果进行分页(100 英里半径可以有数千家餐厅)?还是您只需要纬度/经度的算法?如果是后者,请参阅stackoverflow.com/questions/2652167/…

标签: php mysql


【解决方案1】:

所以基本上你有用户和所有餐馆的经度和纬度..

检查半正弦公式 这很有帮助:http://www.movable-type.co.uk/scripts/latlong.html

实现公式很简单

【讨论】:

    【解决方案2】:

    确定您要开始的 100 英里半径范围内的所有邮政编码(这是基于会话用户位置的当前邮政编码),并包括所有具有这些邮政编码的餐厅。

    【讨论】:

      【解决方案3】:

      您需要一种方法来计算用户与这些邮政编码的纬度之间的距离。

      来源:http://www.movable-type.co.uk/scripts/latlong.html

      【讨论】:

        【解决方案4】:

        首先要获取当前用户邮政编码的纬度/经度值。

        SELECT latitude,longitude FROM tbl_zipcode WHERE zipcode = <USER_ZIPCODE>
        

        然后您可以使用这些值来计算数据库中每个坐标对的距离,例如通过使用 script(用 PHP 编写,因此不会浪费时间考虑 Java 函数)。

        但是您可能需要考虑缓存,因为对于每个坐标对来说这是一项相当繁重的操作。也许您可以预先计算这些值并在每次有新餐厅进来时更新数据库。

        【讨论】:

        • 谢谢。但它只给出了餐馆的距离,我想要那 100 英里内的所有餐馆。如何创建一个返回 100 英里内所有餐厅的函数?
        • 请先考虑您的问题,而不是立即询问。大多数问题都是通过使用脑细胞来解决的,没有人来解决它,而是帮助你解决它。可能的解决方案:给定用户 100 英里范围内的当前邮政编码集,您选择每个具有属于该集的邮政编码的餐厅。
        猜你喜欢
        • 2013-08-21
        • 1970-01-01
        • 2018-03-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多