python实现经纬度转换为位置地区(调用百度API,v3.0版本),解决AK申请成功但不能使用的问题

写在前面:
本文通过调用百度API,实现经纬度转换为省市县,适合2019.6.18之后的注册百度地图开放平台的新用户,为v3.0版本,原因会在后面讲。

第一步:申请百度地图的密钥AK

第二步:python实现

输入:某点的经度和纬度的float格式信息,坐标格式是WGS84
输出:该点的省、市、区/县
注意:url变量为需要修改成你自己的密钥

url = 'http://api.map.baidu.com/reverse_geocoding/v3/?ak=‘你刚才申请的密钥' \
          '&output=json&coordtype=wgs84ll&location=' + loc
  • 代码如下
def getarea(lat, lng):
    loc = str(lat) + "," + str(lng)
    url = 'http://api.map.baidu.com/reverse_geocoding/v3/?ak=‘你刚才申请的密钥' \
          '&output=json&coordtype=wgs84ll&location=' + loc
    req = urllib.request.urlopen(url)  # json格式的返回数据
    res = req.read().decode("utf-8")  # 将其他编码的字符串解码成unicode
    mystr = json.loads(res)
    # #get()获取json里面的数据
    jsonResult = mystr.get('result')
    address = jsonResult.get('addressComponent')
    province = address.get('province')  # 省
    city = address.get('city')  # 市
    district = address.get('district')  # 县级
    area = province + city + district

    return area

前期存在的问题:

网上有很多经纬度定位地区的例子,但申请完百度AK之后,还是不能用,显示KeyError: ('result', 'occurred at index 0')。最后通过查看百度API的服务文档才发现,网上博客的代码大多都是v2.0版本,但2019.6.18起注册的新用户不能使用,所以一直报错,改成v3.0版本接口就可以用了。
逆地理编码服务文档说明
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。