如何在 python 中正确访问 Geocode API 响应
How to correctly access Geocode API response in python
我正在使用 Flask 和 Google 的地理编码 API 来获取有关城市的数据,我想 return 它的坐标为 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)
现在,当我使用邮递员向“http://127.0.0.1:5000/search/pune”发送 GET 请求时,它会在我的控制台中返回此错误
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"]
我不明白为什么会这样。
可以访问 Geocode API 发送的 JSON 响应 here。
如果我通过浏览器
使用以下 URL 也会生成此响应
https://maps.googleapis.com/maps/api/geocode/json?address=pune,+IN&key=[My-Key]
(替换您的密钥)
此外,我想知道是否有更 pythonic 的方法来 return 代码。
如 doc 中所述:
The return type is a list of geocoding results
基本上,geocode
函数 returns 只是您链接到的通常响应中的 results
键。你可以在这里看到:https://github.com/googlemaps/google-maps-services-python/blob/master/googlemaps/geocoding.py#L68
我正在使用 Flask 和 Google 的地理编码 API 来获取有关城市的数据,我想 return 它的坐标为 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)
现在,当我使用邮递员向“http://127.0.0.1:5000/search/pune”发送 GET 请求时,它会在我的控制台中返回此错误
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"]
我不明白为什么会这样。 可以访问 Geocode API 发送的 JSON 响应 here。 如果我通过浏览器
使用以下 URL 也会生成此响应https://maps.googleapis.com/maps/api/geocode/json?address=pune,+IN&key=[My-Key]
(替换您的密钥)
此外,我想知道是否有更 pythonic 的方法来 return 代码。
如 doc 中所述:
The return type is a list of geocoding results
基本上,geocode
函数 returns 只是您链接到的通常响应中的 results
键。你可以在这里看到:https://github.com/googlemaps/google-maps-services-python/blob/master/googlemaps/geocoding.py#L68