Как правильно получить доступ к ответу Geocode API в python - PullRequest
0 голосов
/ 06 июня 2018

Я использую Flask и API геокодирования Google для получения данных о городе, я хочу вернуть его координаты в формате JSON.Вот соответствующий код.

from flask import Flask, request, json
import googlemaps
from datetime import datetime
import requests

app = Flask(__name__)

gmaps = googlemaps.Client(key='My-Key') #I replaced my key

@app.route("/search/<city>", methods=['GET'])
def _find_nearby_events(city):
    request_address = '%(city)s , IN' % {'city':city}
    geocode_result = gmaps.geocode(request_address)

    coordinates = geocode_result["results"][0]["geometry"]["location"]

    return json.dumps(coordinates)

Теперь, когда я использую почтальон для отправки запроса GET на "http://127.0.0.1:5000/search/pune", он возвращает эту ошибку в моей консоли

  File "/home/akshay/Black_Thunder/event-listing-microservice/maps/views.py", line 51, in _find_nearby_events
coordinates = geocode_result["results"][0]["geometry"]["location"]
TypeError: list indices must be integers or slices, not str

Теперь я могу получить доступ к требуемому содержимому, если я изменил приведенное выше выражение координат как

coordinates = geocode_result[0]["geometry"]["location"]

Я не могу понять, почему это так. Доступ к ответу JSON, который отправляет API Geocode, можно получить здесь . Этот ответ также генерируется, если я использую приведенный ниже URL-адрес через браузер

https://maps.googleapis.com/maps/api/geocode/json?address=pune,+IN&key=[My-Key]

(подставьте ваш ключ)

Кроме того, я хотел знать, есть ли более питонский способверните код.

1 Ответ

0 голосов
/ 06 июня 2018

Как указано в doc :

Тип возвращаемого значения представляет собой список результатов геокодирования

По сути, функция geocode возвращаеттолько ключ results в обычном ответе, с которым вы связаны.Вы можете увидеть это здесь: https://github.com/googlemaps/google-maps-services-python/blob/master/googlemaps/geocoding.py#L68

...