【问题标题】:remove duplicate addresses from google maps api results从谷歌地图 api 结果中删除重复的地址
【发布时间】:2011-07-22 18:54:46
【问题描述】:

我正在使用 Google Maps API 允许用户输入他们的位置并根据他们的位置返回结果。但是,当我在澳大利亚输入一些地址时,我会收到重复的信息,例如:

澳大利亚新南威尔士州阿斯奎斯 2077
澳大利亚新南威尔士州阿斯奎斯

Wollstonecraft,悉尼,新南威尔士州 2065,澳大利亚
Wollstonecraft 新南威尔士州 2065,澳大利亚

目前,如果有重复,我会为成员提供一个选项,让他们在结果之间进行选择,但我觉得通过一些聪明的 PHP,我可以复制这一步。我对 preg_replace 不是很好(如果这是解决方案),希望有人有解决方案。基本上,我想要一个函数来比较两个(或更多)地址,如果它们相同则返回 true,如果它们是不同地址则返回 false。

还要注意,在第二个示例中,已添加了悉尼,因此需要在任何人都可以提供的任何解决方案中考虑到这一点。

我认为大多数重复的结果集通常采用相同的格式,如果我发现其他异常,应该能够调整函数。

非常感谢您提供的任何帮助。

【问题讨论】:

  • 其实结果不重复。如果您查看结果的坐标,它们指向不同的位置,尽管 google 地理编码服务返回的位置名称几乎相同。

标签: php regex google-maps preg-replace duplicates


【解决方案1】:

您可以使用函数@987654321@ 来确定两个字符串的相似程度。

例子:

<?php similar_text("Wollstonecraft, Sydney New South Wales 2065, Australia", "Wollstonecraft New South Wales 2065, Australia", $p); echo "Percent: $p%"; ?>

这将产生: Percent: 92%

【讨论】:

  • @Gerben Jacbos 处理超过 20000 个字符的字符串需要 3-5 秒,其他任何内容(10000 及以下)只需几分之一秒。
  • @Stephen 非常感谢您的解决方案,这正是我正在寻找的那种功能。原来,重复是因为谷歌列出了“Asquith”和“Wollstonecraft”火车站的地址以及郊区本身的结果,因此这个重复。我刚刚检查了位置类型并对其进行了过滤,但是您的解决方案完美地回答了我的问题。谢谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-02-26
  • 2012-07-06
  • 2019-11-17
  • 2017-09-16
相关资源
最近更新 更多