我正在使用google maps api v3编写一个Web应用程序,它会显示我的客户感兴趣的地方。这些不会出现在谷歌地图上,我希望用户能够过滤结果以满足他们的特定需求。
我已经开始工作,以便地图以加载时用户当前位置为中心。但是,如果他们愿意,它确实允许他们输入另一个地址。当我这样做时,地图默认为美国地区。
有没有办法从用户的当前位置获取地图的region参数,并使用它来获得更相关的结果?
我想要实现的另一个功能是仅搜索距离给定位置的某个(用户可指定的)距离内的结果。目前所有的地方都存储在MySQL数据库中(包括地址,纬度和经度),我遍历所有地方并使用this formula来确定距离。我预计我可能会在数据库中获得50,000个位置。
我是否应该担心这个计算的响应时间,有没有办法让它更快?将我的数据存储在MySQL数据库中对于这种应用程序通常是一个好主意吗?
答案 0 :(得分:1)
偏向地理编码器结果:
要偏向地理编码器结果,您可以使用navigator.language
作为region
参数。它应该为用户提供更相关的结果。
改善结果的其他方法可能是使用用户的当前位置。您可以使用viewport biasing来改善结果(您可以围绕用户的当前位置计算一些边界框)。
使用用户的当前位置获取region
参数的值是有问题的。我不知道是否有一些公共API从某个位置获取IANA language subtag。但您可以使用反向地理编码器转换位置,然后从结果中提取国家/地区代码。问题是某些国家/地区代码与所需的IANA语言子标签不匹配(例如,ca是加拿大的国家/地区代码,但是加泰罗尼亚语,瓦伦西亚语的语言子标签)。但是,大多数时候使用国家代码而不是语言子标签应该会改善结果。
在MySQL db中存储latlng:
我担心迭代所有地方并应用Haversine公式可能非常耗时(有些研究here)。
在MySQL中处理滞后数据的最佳方法可能是使用spatial extensions。关于使用它的nice blog post。