Py学习  »  Python

请求调用google maps api的python字符串编码

Dave • 6 年前 • 2473 次点击  

我正在尝试对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'}

我尝试了很多技巧(转换为字节、字节、编码(“utf-8”)来实现这个功能,但都没有成功。我知道urllib模块及其parse.quote等方法,但必须切换吗?

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/43763
文章 [ 2 ]  |  最新文章 6 年前
Dave
Reply   •   1 楼
Dave    7 年前

放弃。改用pygeocoder:

my_geocoder = Geocoder(api_key=dsc.GOOGLE_MAPS_API_KEY)
results = my_geocoder.reverse_geocode(lat, long)
Heikki Pulkkinen
Reply   •   2 楼
Heikki Pulkkinen    7 年前

编辑:显然参数名是区分大小写的。您还需要使用https。这是一个工作代码:

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)