python字符串编码用于请求,请致电Google Maps API



我正在尝试对Google Maps API进行简单的反向地理编码呼叫...

lat = 40.714224
long = -73.961452
urlparams = {'LatLng': str(lat)+","+str(long),
             'key': dsc.GOOGLE_MAPS_API_KEY
            }
burl = 'http://maps.google.com/maps/api/geocode/json'
r = requests.get(burl, params=urlparams)

这失败了,因为"正在翻译为%2C:

http://maps.google.com/maps/api/geocode/json?LatLng=40.714224%2C-73.961452&key=dsc.GOOGLE_MAPS_API_KEY
{'error_message': "Invalid request. Missing the 'address', 'components', 'latlng' or 'place_id' parameter.", 'results': [], 'status': 'INVALID_REQUEST'}

我尝试了一堆技巧(转换为字节,字节,encode(" utf-8"))使这项工作但无济等等。方法,但我必须切换?

编辑:显然,参数名称对案例敏感。您还需要使用HTTP。这是一个工作代码:

lat = 40.714224
long = -73.961452
urlparams = {
             'latlng': "{},{}".format(lat, long),
             'key': dsc.GOOGLE_MAPS_API_KEY
            }
burl = 'https://maps.google.com/maps/api/geocode/json'
r = requests.get(burl, params=urlparams)

原始(错误)答案:使用数组而不是字符串工作吗?

lat = 40.714224
long = -73.961452
urlparams = {'LatLng': [str(lat), str(long)],
             'key': dsc.GOOGLE_MAPS_API_KEY
            }
burl = 'http://maps.google.com/maps/api/geocode/json'
r = requests.get(burl, params=urlparams)

放弃。而是使用pygeocoder:

my_geocoder = Geocoder(api_key=dsc.GOOGLE_MAPS_API_KEY)
results = my_geocoder.reverse_geocode(lat, long)

相关内容

最新更新