美文网首页
使用Python调用百度地图Api获取两地距离

使用Python调用百度地图Api获取两地距离

作者: 42c64edf12e9 | 来源:发表于2020-03-07 16:21 被阅读0次

    完整代码可以关注公众号:Romi的杂货铺

    1.获取百度api接口
    首先需要在百度的公众平台http://lbsyun.baidu.com/上点击控制台,如果是新用户的话需要进行注册和验证。注册和验证完毕后可以点击创建应用,填写应用名称等相关信息,应用类型根据需要进行设置,有浏览器端和服务器端两种。在这里特别说明的是,在IP白名单框里最好设置为:0.0.0.0/0,因为有时候把自己己的IP地址输进去可能也不行。
    创建应用完成后我们就可以得到刚刚创建的应用的密钥(AK)

    2.获取起始地点的地理编码
    首先是找到获取步行距离的官方文档http://lbsyun.baidu.com/index.php?title=webapi/directionlite-v1,但是发现对应的api接口里需要起始地点的地理编码,所以首先需要获取对应起始位置的地理编码http://lbsyun.baidu.com/index.php?title=webapi/guide/webservice-geocoding。如果有其他的需求,例如找路线规划等等都可以通过说明文档进行修改

    def getapiurl(myaddress):
        url=r"http://api.map.baidu.com/geocoding/v3/?address={}&output=json&ak={}".format(myaddress,myAK)#说明文档里给出的api接口
        print(url)
        return url
     
    def getPosition(url):
        '''返回经纬度信息'''
        res = requests.get(url)
        json_data = json.loads(res.text)
     
        if json_data['status'] == 0:
            lat = json_data['result']['location']['lat']  # 纬度
            lng = json_data['result']['location']['lng']  # 经度
        else:
            print("Error output!")
            return json_data['status']
        return lat, lng
    

    3.获取起始地点的步行距离

    def getdistance(startlat,startlng,endlat,endlng):
        #{: .6f}保留小数点后六位
        distanceurl=r"http://api.map.baidu.com/directionlite/v1/walking?origin={:.6f},{:.6f}&destination={:.6f},{:.6f}&ak={}".format(startlat,startlng,endlat,endlng,myAK)
        res = requests.get(distanceurl)
        dis_json_data = json.loads(res.text)
        if dis_json_data['status'] == 0:
            distance=dis_json_data['result']['routes'][0]['distance']
            print(distance)
    

    这里通过api获取的json文件中的结构与说明文档中的结构有一些出入,所以还是要按照实际的情况灵活修改

    http://smilecoc.vip/2020/03/07/%E4%BD%BF%E7%94%A8Python%E8%B0%83%E7%94%A8%E7%99%BE%E5%BA%A6%E5%9C%B0%E5%9B%BEApi%E8%8E%B7%E5%8F%96%E4%B8%A4%E5%9C%B0%E8%B7%9D%E7%A6%BB/

    相关文章

      网友评论

          本文标题:使用Python调用百度地图Api获取两地距离

          本文链接:https://www.haomeiwen.com/subject/oxecdhtx.html