谷歌地理编码 API 的问题:在响应中获取“partial_match”

DOT*_*eam 5 api google-maps google-maps-api-3 google-geocoder google-geocoding-api

我正在使用 google Geocode API 来获取特定地址的经纬度。

当我在谷歌搜索或谷歌地图中搜索“364 S Side Square, Carlinville, IL 62626, USA”时,它会在谷歌搜索结果或地图结果中提供准确的定位。

但同时,当我使用以下请求调用使用地理编码 API 搜索相同的地址时,它给出了“partial_match”:true

http://maps.googleapis.com/maps/api/geocode/json?address=364 S Side Square, Carlinville, IL 62626, USA&sensor=false

任何人都知道为什么它给出 "partial_match" : true 作为回应?

我必须在 API 请求中进行哪些更改才能获得“partial_match”?

xom*_*ena 6

要了解“364 S Side Square, Carlinville, IL 62626, USA”的部分匹配标志的性质,让我们在地理编码器工具中查看此地址:

https://google-developers.appspot.com/maps/documentation/utils/geocoder/#q%3D364%2520S%2520Side%2520Square%252C%2520Carlinville%252C%2520IL%252062626%2252C%2

事实上,在结果中搜索字符串和格式的地址是完全一样的,但是,我们必须要注意像其他值location_typeplace_id

在此处输入图片说明

如您所见,位置类型为 RANGE_INTERPOLATED 并且地点 ID 具有长值Ei0zNjQgUyBTaWRlIFNxdWFyZSwgQ2FybGludmlsbGUsIElMIDYyNjI2LCBVU0E。这意味着谷歌在他们的数据库中没有准确的地址功能,并试图插入这个地址可能位于的位置。如果 Google 数据库中存在地址,您将看到位置类型 ROOFTOP 和较短的地点 ID(类似于 ChIJrTLr-GyuEmsRBfy61i59si0)。

恢复上述内容,您示例中的部分匹配标志表明 Google 数据库中不存在确切的街道地址功能。

这也可以通过文档中的以下句子来确认:

部分匹配最常发生您在请求中传递的地区内不存在的街道地址

https://developers.google.com/maps/documentation/geocoding/intro#GeocodingResponses

您还可以选择通过帮助中心向 Google 报告缺失的地址:

https://support.google.com/maps/answer/6320846

希望我的回答能解决你的疑惑!


小智 1

partial_match 表示地理编码器没有返回原始请求的精确匹配,尽管它能够匹配部分请求的地址。您可能希望检查原始请求是否有拼写错误和/或地址不完整。

部分匹配最常发生在您在请求中传递的区域内不存在的街道地址上。当请求与同一地点的两个或多个位置匹配时,也可能返回部分匹配。例如,“21 Henr St, Bristol, UK”将返回 Henry Street 和 Henrietta Street 的部分匹配项。请注意,如果请求包含拼写错误的地址部分,地理编码服务可能会建议替代地址。以这种方式触发的建议也将被标记为部分匹配。

尝试place_id这是唯一标识符