python调用百度地图这个怎么搞

为什么会显示'result location lng错误啊

不是所有的地址都能得得一个有效的地理编码的,需要检查status是否为0。

参考以下代码:

# coding=utf-8

from urllib.request import urlopen, quote
from json import loads as loadjson

ak = '--------------------------------'

def _url(service,**kv):
    qstr = ''
    url = 'http://api.map.baidu.com/' \
        + service + '/v2/' \
        + '?output=json' \
        + '&ak=' + ak
    for k, v in kv.items():
        url += '&' + k + '=' + quote(v)
    return url

def baidumapapi(service,**kv):
    data = urlopen(_url(service,**kv)).read().decode('utf-8')
    return loadjson(data)


geo = baidumapapi('geocoder',address='gd')
if geo['status'] == 0:
    try:
        print(geo['result']['location']['lng'])
    except (Exception,):
        print(geo)
else:
    print('{}({})'.format(geo['msg'] if 'msg' in geo.keys() else geo['message'],
                          geo['status']))
温馨提示:答案为网友推荐,仅供参考