【问题标题】:How can I search based on distance with the Google Maps API?如何使用 Google Maps API 根据距离进行搜索?
【发布时间】:2011-01-28 18:16:25
【问题描述】:
  1. 所以问题来了...我有一个字段,用户可以在其中输入他们的地址(将通过 Google Maps API 进行地理编码)。
  2. 我的数据库中有几个小部件的地址(保存为地址.. 再次可以轻松地进行地理编码)。

我需要用户输入他们的地址,并根据与他们地址的距离列出我的小部件列表。我的小部件有数千个地址,而用户显然有无数个地址。

有什么想法吗?

谢谢。

【问题讨论】:

    标签: php google-maps google-maps-api-3 map geolocation


    【解决方案1】:
    SELECT latitude, longitude, SQRT( POW( 69.1 * ( latitude - 52.58 ) , 2 ) + 
    POW( 69.1 * ( - 1.12 - longitude ) * COS( latitude / 57.3 ) , 2 ) ) AS distance 
    FROM location ORDER BY distance
    

    Click Here 它们提供了几种计算距离的方法 - 选择最适合您的方法。

    【讨论】:

      【解决方案2】:

      你真的不能使用谷歌来计算你的地理距离过滤。为此,您必须向他们发送您的数据,让他们存储并为您查询。他们现在或将来可能会提供这项服务,但我还没有听说过。

      按照更合法、更有能力、更昂贵的顺序排列:

      A/ 由于SINGLE 点或感兴趣的位置由您网站的客户输入,请收集地理坐标。然后使用您自己的搜索引擎并按与某个点的距离进行搜索。可能违反了与谷歌的协议,但他们确实提到了“缓存”结果以减轻服务器的负载。 (原因是我个人的猜测。)

      B/ 使用谷歌进行批量地理编码,也许一次一个,我上次看到的每个网站的 IP 地址每天最多 5000 个。甚至不确定这是否违反使用协议。

      C/ 购买地理编码服务合同,并存储他们为您编码的内容。

      D/ 购买一个地理编码库并进行自己的地理编码。

      【讨论】:

        【解决方案3】:

        这篇博文 "Calculate Distance using Google Maps API" 可能会有所帮助。

        【讨论】:

        • 这对于 2 分来说很好,但是当用户输入他/她的地址时,如何实时为我的所有地址执行此操作?
        • 通过使用for .. next 循环?您的小部件已经被地理编码并存储在数据库中。通过 API 调用对用户地址进行地理编码后,这只是一个数学问题。即使是数千个地址也只需要几秒钟。
        【解决方案4】:

        如果您将项目存储在 MySQL 数据库中,则 here's the basis what you need

        【讨论】:

          猜你喜欢
          • 2014-02-25
          • 1970-01-01
          • 2011-03-16
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2015-12-16
          • 2020-11-03
          相关资源
          最近更新 更多