Матрица расстояний Google не содержит деревню - PullRequest
1 голос
/ 26 июня 2019

Я написал функцию, которая получает данные, содержащие название города / деревни. Теперь кажется, что матрица направлений Google API не распознает одно из указанных значений. Кто-нибудь знает, как получить результаты в любом случае? Если я введу название деревни (Erp, в Нидерландах) в Картах Google, оно найдет его без труда.

код функции:

def calc_dist(dest):
    jsonReq = json.load(uReq(jsonURL + source + "&destinations=" + dest + 
    "&key=" + googleAPI))
    distance = jsonReq['rows'][0]['elements'][0]['distance']['value']
    return distance

Ошибка:

Traceback (most recent call last):
File "webscraper_tester.py", line 88, in <module>
distance = str(calc_dist(destination))
File "webscraper_tester.py", line 25, in calc_dist
distance = jsonReq['rows'][0]['elements'][0]['distance']['value']
KeyError: 'distance'

Сгенерированный URL выглядит следующим образом:

https://maps.googleapis.com/maps/api/distancematrix/json?units=metric&origins=Nijmegen,GE&destinations=Erp,NB&key="API-KEY"

1 Ответ

1 голос
/ 26 июня 2019

Карты Google используют ISO 3166-1 коды стран в своих различных API-интерфейсах, и при поиске населенного пункта целесообразно указывать код страны.

Код страны для Нидерландов - NL. Если я переписываю ваш запрос, удаляя код региона, который вы включили, и добавляя код страны, например:

https://maps.googleapis.com/maps/api/distancematrix/json?units=metric&origins=Nijmegen,NL&destinations=Erp,NL&key=YOUR_KEY

Затем возвращается:

{
  "destination_addresses": [
    "5469 Erp, Netherlands"
  ],
  "origin_addresses": [
    "Nijmegen, Netherlands"
  ],
  "rows": [{
    "elements": [{
      "distance": {
        "text": "45.7 km",
        "value": 45652
      },
      "duration": {
        "text": "35 mins",
        "value": 2113
      },
      "status": "OK"
    }]
  }],
  "status": "OK"
}
...