代码之家  ›  专栏  ›  技术社区  ›  Pekka

谷歌地图地理编码API-国家偏见,奇怪的结果

  •  4
  • Pekka  · 技术社区  · 16 年前

    我将连接到从PHP到geocode的google maps api,这是租赁站定位器应用程序的一些起点。

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

    这个申请应该在德国有效。当位置名称不明确(即该名称有多个位置)时,我希望显示一个可能性列表。

    一般来说,这不是问题:如果进行不明确的搜索,Google的XML输出将返回 <PlaceMark> 元素而不是一个。

    显然,我需要将地理编码偏向于德国,所以如果有人输入一个邮政编码或者一个在其他国家也存在的地区的名称,那么只有在德国的点击才会真正出现。

    我想我可以通过增加 , de , Deutschland 到搜索查询。这基本上是可行的,但在某些情况下会产生奇怪和不可容忍的结果。

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

    当我寻找 纽斯塔特 独自:

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

    我至少得到了其中的六个,我可以和他们住在一起(可能是其他人没有被合并,或者是其他地方的一部分,或者其他什么地方)。

    然而,当我寻找 Neustadt, de Neustadt, Deutschland Neustadt, Germany 我只得到 在27个地方中,没有明显的原因——它不是最大的,也不是最大的 精确 准确,也没有其他任何独特的特点。

    有人知道这是为什么吗?我能做些什么?

    我试过了 region 参数,但无效-当我不使用 ,邮政编码(如 50825 将由他们的美国同行决定,而不是德国同行。

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

    3 回复  |  直到 9 年前
        1
  •  2
  •   Daniel Vassallo    16 年前

    这肯定不是一个详尽的答案,但只是几个注意事项:

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

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

    2. 您提到过您正在筛选其准确性属性上的位置标记。注意,这个字段不再出现在新的地理编码API的结果中,但无论如何,我认为它在旧的API中仍然不太可靠。

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

    我相信,谷歌地理编码是一个伟大的工具,当你给它一个完整的地址,至少“街道,地区,国家”的格式,它也是非常可靠的其他格式,当它不必处理任何含糊不清(地理编码“伦敦,英国”总是为我工作)。

    但是,在您的情况下,我真的会考虑预先计算每个德国地区的所有坐标,并简单地从您的数据库中处理地理编码。我认为这是非常可行的,特别是因为你的申请只局限于一个国家。每个城镇 Wikipedia "List of German Towns" 看起来坐标存储在一个整洁的小 <span> 这看起来很容易分析:

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

    这个列表中有16个neustadts,可能比谷歌的6个要好。

        2
  •  1
  •   Mark    14 年前

    发现谷歌自动完成功能比他们的地理代码更好

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

        3
  •  0
  •   sera    9 年前

    在搜索此确切问题时发现此问题。然后意识到必应地图的API工作得更好。不过,这也有其怪癖。例如,如果您通过机场代码,它将向您显示6个不同的解决方案,每个解决方案对应于机场的每个终端。

    推荐文章