ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

php – Google Maps Geocoding API – 国家偏见,奇怪的结果

2019-07-01 02:15:51  阅读:155  来源: 互联网

标签:php geolocation google-maps


我正在从PHP连接到Google Maps API,以便为租赁站定位器应用程序分配一些起点.

那些起点不一定是确切的地址;城市名称就足够了.使用精度等于或大于4(城市/地点水平)的地理编码响应作为起点,并搜索周围的租赁站.

该应用程序应该在德国工作.当一个地点名称不明确时(即该名称不止一个地方)我想显示一个可能性列表.

这通常不是问题:如果您进行模糊搜索,Google的XML输出会返回< PlaceMark>列表.元素而不仅仅是一个.

显然,我需要将地理编码偏向德国,所以如果有人输入邮政编码或其他国家的地方名称,那么德国实际上只会出现点击.

我想我可以通过在搜索查询中添加,de或Deutschland来实现这一点.这种方法大部分都很好,但在某些情况下会产生奇怪且无法忍受的结果.

例如,德国有27个地区名为Neustadt. (Wikipedia)

当我单独搜索Neustadt时:

http://maps.google.com/maps/geo/hl=de&output=xml&key=xyz&q=Neustadt

我得到至少六个,我可以忍受(可能是其他人没有合并,或不同地方的部分,或其他).

然而,当我搜索Neustadt,de,或Neustadt,Deutschland或德国Neustadt时,我只得到27个地方中的一个,没有明显的理由 – 它不是最大的,也不是最准确的准确度,也没有任何其他独特的特征.

有谁知道这是为什么,我能做些什么呢?

我尝试了区域参数,但无济于事 – 当我不使用时,de,postcodes(如50825将被解决给他们的美国同行,而不是德国的.

我目前的解决方法是在输入仅为数字时添加国家/地区名称,否则仅过滤掉德语结果,但这听起来非常糟糕.有人知道更好的方法吗?

解决方法:

这绝对不是一个详尽的答案,只是一些注意事项:

>您使用的是old V2 version of the Geocoding API,谷歌最近弃用了new V3 API.谷歌建议从现在开始使用新服务,虽然我对新版本没有实际经验,但似乎他们改进了服务各点,特别是响应的结构.您不需要API密钥即可使用新服务,只需使用稍微不同的URL即可:

07002

>您提到您在其准确属性上过滤了地标.请注意,此字段不再出现在新地理编码API的结果中,但无论如何,我认为它在旧API中仍然不太可靠.
>您可能想尝试使用新API的bounds和region参数,但我仍然怀疑它们会解决您的问题.

我相信Google Geocoder是一个很好的工具,当你给它一个至少“街道,地点,国家”格式的完整地址时,它在其他格式中也非常可靠,因为它不需要处理任何含糊不清(Geocoding“伦敦,英国”一直对我有用).

但是,在您的情况下,我会考虑预先计算每个德国地区的所有坐标,并简单地从数据库中自行处理地理编码.我认为这是非常可行的,特别是因为您的应用程序本地化到一个国家/地区. Wikipedia “List of German Towns”中的每个城镇似乎都具有存储在整齐的小< span>内的坐标.看起来很容易解析:

<span class="geo">47.84556; 8.85167</span>

该列表中有16个Neustadts,可能比谷歌的6个更好:)

标签:php,geolocation,google-maps
来源: https://codeday.me/bug/20190701/1342724.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有