使用Python調用百度地圖Api獲取兩地距離

完整代碼可以關注公眾號: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/

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容