【发布时间】:2018-07-11 15:40:50
【问题描述】:
我有一个包含几千个位置的列表,我需要为其查找坐标。我正在为此使用 Google Geocode API。
我掌握的信息类似于“美国、加利福尼亚、纳帕谷”
所以我的 Geocode 调用看起来像这样:
https://maps.googleapis.com/maps/api/geocode/json?address=Napa+Valley,California,USA&key=<apikey>
(我把它们倒序并用“+”字符替换空格)
我当然最感兴趣的是在['results'][0]['geometry']['location'] 键下找到的值(可以找到纬度和经度)。
现在,在很多情况下,我只需等待几个小时或 1 天,然后再次拨打电话,就会得到截然不同的结果。我使用完全相同的数据、相同的参数、相同的一切进行这些调用
通常坐标相差几分之一度或最多 1.0 - 1.5 度。例如,昨天的 39.8 纬度变成了今天的 40.4 纬度。然后它变成40.1。然后一天后又回到 39.8。然后是 40.25。等等……
但在某些极端情况下,差异很大。
实际的具体例子:
https://maps.googleapis.com/maps/api/geocode/json?address=Côtes+du+Rhône-Brézème,Northern+Rhône,Rhône,France&key=<apikey>
结果会是这样的:
{
"results": [
{
.....
"formatted_address": "Rhône",
"geometry": {
.........
"location": {
"lat": 44.952398,
"lng": 6.4840823
}
},
"partial_match": true,
......
}
],
"status": "OK"
}
所以它在某种程度上被正确地识别为法国的罗纳河地区。
但是,如果我等待几分钟并再次拨打电话,我会收到以下信息:
{
"results" : [
{
......
"formatted_address" : "148 Chambers St A, New York, NY 10007, USA",
"geometry" : {
"location" : {
"lat" : 40.715666,
"lng" : -74.009906
},
......
},
.....
}
],
"status" : "OK"
}
从什么时候开始,罗纳/法国离纽约更近了?
这是令人讨厌的部分:我没有更改 URL 的任何内容。我只是在几分钟后拨打完全相同的电话。
我的想法是这是由于我没有正确编码 URL 造成的。
然而,虽然这可能是真的,但我发现它发生在根本不使用特殊字符的查询中,例如 Clarksburg,California,USA。在这种情况下,虽然我得到了 2 个不同的结果(坐标),都在加利福尼亚,彼此相距约 200 英里。
为什么会这样?我需要此 API 的一致结果。我不需要极端精确或类似的东西。但至少有一些强一致性。
我不能只遍历几千个位置,然后手动将它们放入 Google-Maps 网站以查找它们的坐标。我需要 1 周的不间断工作...
【问题讨论】:
-
此问题现已在 Google 的问题跟踪器上报告:issuetracker.google.com/issues/116821440
标签: google-api geocoding google-geocoder google-geocoding-api