首页 文章

检索Google Maps API地址的区域

提问于
浏览
0

我正在使用google maps api v3编写一个Web应用程序,它显示了我的客户感兴趣的地方 . 这些不会出现在谷歌 Map 上,我希望用户能够过滤结果以满足他们的特定需求 .

我已经让它工作,以便 Map 以用户当前加载位置为中心 . 但是,如果他们愿意,它确实允许他们输入另一个地址 . 当我这样做时, Map 默认为美国地区 .

有没有办法从用户的当前位置获取 Map 的region参数,并使用它来获得更相关的结果?

我想要实现的另一个功能是仅搜索距给定位置的某个(用户可指定的)距离内的结果 . 目前所有地方都存储在MySQL数据库中(包括地址,纬度和经度),我遍历所有地方并使用this formula来确定距离 . 我预计我可能会在数据库中获得50,000个名额 .

我应该担心这个计算的响应时间,有没有办法让它更快?将我的数据存储在MySQL数据库中对于这种应用程序通常是一个好主意吗?

1 回答

  • 1

    Biasing geocoder results:

    要偏置地理编码器结果,可以使用 navigator.language 作为 region 参数 . 它应该为用户提供更相关的结果 .

    改善结果的其他方法可能是使用用户的当前位置 . 您可以使用viewport biasing来改善结果(您可以计算用户当前位置周围的某些边界框) .

    使用用户的当前位置获取 region 参数的值是有问题的 . 我不知道是否有一些公共API从某个位置获取IANA language subtag . 但您可以使用反向地理编码器转换位置,然后从结果中提取国家/地区代码 . 问题是某些国家/地区代码与所需的IANA语言子标签不匹配(例如,ca是加拿大的国家/地区代码,但是加泰罗尼亚语,瓦伦西亚语的语言子标签) . 但是,大多数时候使用国家代码而不是语言子标签应该会改善结果 .

    Storing latlng in MySQL db:

    我担心迭代所有地方并应用Haversine公式可能非常耗时(一些关于它的研究here) .

    在MySQL中处理滞后数据的最佳方法可能是使用spatial extensions . 关于使用它的nice blog post .

相关问题