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

Google Maps Geocoding API - country biasing, bizarre results

提问人:Pekka 提问时间:5/19/2010 最后编辑:Pekka 更新时间:10/27/2016 访问量:2354

问:

我正在从 PHP 连接到 Google Maps API,以对租赁车站定位器应用程序的一些起点进行地理编码。

这些起点不一定是确切的地址;城市名称就足够了。使用等于或大于 4(城市/地区级别)的地理编码响应作为起点,并搜索周围的租赁站点。accuracy

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

一般来说,这不是一个问题:如果你进行一个模棱两可的搜索,谷歌的XML输出会返回一个元素列表,而不仅仅是一个。<PlaceMark>

显然,我需要将地理编码偏向于德国,因此,如果有人输入邮政编码或其他国家/地区也存在的地方名称,则实际上只会出现德国的点击。

我以为我可以通过添加 or 到搜索查询来实现这一点。这基本上工作得很好,但在某些情况下会产生奇怪和无法忍受的结果。, de, Deutschland

例如,德国有 27 个地方被命名为 。(维基百科上的数据Neustadt)

当我独自搜索时:Neustadt

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

我至少有六个,我可以忍受(可能是其他的没有被合并,或者是不同地方的一部分,或者其他什么)。

然而,当我搜索 、 或 或 时,我只得到了 27 个地点中的一个,没有明显的原因——它不是最大的,也不是最准确的,也没有任何其他独特的特征。Neustadt, deNeustadt, DeutschlandNeustadt, Germanyaccuracy

有谁知道为什么会这样,我能做些什么?

我尝试了该参数,但无济于事 - 当我不使用 、邮政编码(例如将解析为美国同行,而不是德国同行。region, de50825

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

php 谷歌地图 地理位置

评论


答:

2赞 Daniel Vassallo 5/19/2010 #1

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

  1. 您正在使用旧的 V2 版本的地理编码 API,Google 最近已弃用该版本,取而代之的是新的 V3 API。谷歌建议从现在开始使用新服务,虽然我对新版本没有实际经验,但似乎他们在各个方面都改进了服务,尤其是在响应结构方面。您不需要 API 密钥即可使用新服务,只需使用稍微不同的 URL:

    http://maps.google.com/maps/api/geocode/xml?address=Neustadt&sensor=false

  2. 您提到您正在根据地标的准确性属性筛选地标。请注意,此字段不再出现在新地理编码 API 的结果中,但无论如何,我认为它在旧 API 中仍然不是很可靠。

  3. 您可能想尝试使用新 API 的 and 参数,但我仍然怀疑它们能否解决您的问题。boundsregion

我相信 Google Geocoder 是一个很好的工具,当您至少以“街道、地点、国家/地区”格式为其提供完整地址时,并且在不必处理任何歧义时,它在其他格式中也非常可靠(地理编码“英国伦敦”总是对我有用)。

但是,就您而言,我真的会考虑预先计算每个德国地区的所有坐标,并简单地从数据库中自行处理地理编码。我认为这是非常可行的,特别是因为您的应用程序仅本地化到一个国家/地区。维基百科“德国城镇列表”中的每个城镇似乎都存储了一个整洁的小坐标,看起来很容易解析:<span>

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

该列表中有 16 个 Neustadts,可能比 Google 的 6 个:)要好

评论

0赞 Pekka 5/19/2010
+1 感谢您指出 API 版本的怪癖:这是我要改变的第一件事。预先解析城镇名称列表是一个非常好的主意,事实上,直到现在都是这样做的(使用硬编码位置而不是动态计算)。我想绕过额外的工作来实现这一点,但这确实可能是最好的方法。干杯!
0赞 Daniel Vassallo 5/19/2010
@Pekka:请注意,维基百科列表只是我首先想到的。可能还有其他数据源,使用起来可能更方便。
1赞 Mark 1/27/2012 #2

发现 Google 自动完成比他们的地理编码效果更好

http://code.google.com/apis/maps/documentation/javascript/places.html#places_autocomplete

评论

0赞 Pekka 1/27/2012
哇,这很有趣!谢谢。我可能会看看这个。
0赞 Kaitlin Duck Sherwood 4/1/2013
标准的 Google 地图地理编码器与 API 地理编码器不同。可能是自动完成使用其标准地理编码器而不是 API 地理编码器。
0赞 sera 10/27/2016 #3

发现这个问题正在搜索这个确切的问题。然后意识到 Bing Maps API 的效果要好得多。不过,它有其怪癖。例如,如果您传递机场代码,它将显示 6 种不同的解决方案,每种解决方案对应于机场的每个航站楼。