如何从Google Maps API地理编码结果中过滤出虚构的位置(例如"在岩石下","隐藏")?

Rya*_*yan 11 api json google-maps filtering google-maps-api-3

Google Maps API可以很好地找到几乎每个查询的匹配项.但如果我只对真实位置感兴趣,我该如何筛选出谷歌的猜测呢?

例如,据Google称," under a rock"位于" The Rock, Shifnal, Shropshire TF11, UK".但是一个回答这个问题的人,"你在哪里?" "在岩石下"并不代表他们在英国什罗普郡.相反,他们只是不想告诉你 - 好吧,无论是那个还是他们真的遇到麻烦,谢天谢地,网络访问,陷入困境.

我有几百万用户生成的位置字符串,我正试图找到坐标.如果有人写下"在岩石下",我宁愿只留下坐标,null而不是在英国什罗普郡放一个明显错误的点.

以下是其他一些例子:

最终,我是一个可靠的方法从字符串返回坐标但如果位置如上所述则返回false.

我需要构建一个返回以下内容的函数:

您有什么推荐的吗?

这是一个逗号分隔的数组,供您在家玩:

'twin cities','right behind you','under a rock','nowhere','canada','mission district san francisco','chicago','a galaxy far far away','london, england','1600 pennsylvania ave, washington, d.c.','california','41.87194,12.56738','global','worldwide','on the internet','mars'
Run Code Online (Sandbox Code Playgroud)

这是url格式:

'http://maps.googleapis.com/maps/api/geocode/json?address=' + query + '&sensor=false'
ex: http://maps.googleapis.com/maps/api/geocode/json?address=twin+cities&sensor=false
Run Code Online (Sandbox Code Playgroud)

小智 4

看来大多数不正确的结果都将“partial_match”属性设置为“true”。

例如

双城,没有部分匹配: http://maps.googleapis.com/maps/api/geocode/json? address=Twin%20Cities&sensor=false

在岩石下,10 多个结果,全部部分匹配: http://maps.googleapis.com/maps/api/geocode/json ?address=under%20a%20rock&sensor=false

尽管此属性的最初目的不是告诉地点是否正确,但它在您提供的数据集上仍然相当准确。

来自 Google 地图 API 文档:

partial_match 表示地理编码器没有返回原始请求的精确匹配,尽管它能够匹配部分请求的地址。您可能希望检查原始请求是否有拼写错误和/或地址不完整。
部分匹配最常发生在您在请求中传递的区域内不存在的街道地址上。当请求与同一地点的两个或多个位置匹配时,也可能返回部分匹配。例如,“21 Henr St, Bristol, UK”将返回 Henry Street 和 Henrietta Street 的部分匹配项。请注意,如果请求包含拼写错误的地址部分,地理编码服务可能会建议备用地址。以这种方式触发的建议不会被标记为部分匹配。