使用百度地圖來展示自定義的GPS點,用pyechart 框架實例


pyecharts 可以用百度地圖展示

1. 通過串口提取gps 數據 ,或者已經保存文件數據

在官網的介紹中,采用Faker 生成的數據,如下

c = (
    Map()
    .add("商家A", [list(z) for z in zip(Faker.provinces, Faker.values())], "china")
    .set_series_opts(label_opts=opts.LabelOpts(is_show=False))
    .set_global_opts(title_opts=opts.TitleOpts(title="Map-不顯示Label"))
    .render("map_without_label.html")
)

但是對於單個點並沒有說明。假設一個點json的列表方式, [{"上海浦東xx點", [121.11, 31.343]}]

即在所有已有的數據中,是官方已經定義好的數據,因此可以匹配到 "china" 數據庫內容。如果是自定義的單點,則先也要加入數據庫中來,然后才有顯示。

否則會提示(121.11, 31.343) 位置點不在地圖中,編譯出錯。

如何加入單點參考第三節內容

 

2. 將數據轉換成百度地圖數據坐標

這里,可以簡單的有兩種方法,即通過定義函數計算,第二種在百度地圖api 網站申請ak,使用免費限制的轉換。 筆者采用了后者,定義了通用的函數,方便后續操作。

def convrt_data(long,lat,ak):
    baiduAPIurl = "http://api.map.baidu.com/geoconv/v1/?coords=%s,%s&from=1&to=5&ak=%s"%(long,lat,ak)
    res =requests.get(baiduAPIurl)
    bd_long = ((res.json())['result'].pop())['x']
    bd_lat = ((res.json())['result'].pop())['y']
    return bd_long,bd_lat

 

3. GPS 自定數據,展示自定義的gps 數據到地圖上

關於自定義的GPS 點,官網並沒有過多解釋。

  首先,需要加入單個GPS 定位點

bdmap.add_coordinate()
# bdmap.add_coordinate("上海浦東xx點",121.11,31.676) # 定位點名稱,經緯度

 

 其次,需要重新add 加載到主map(). 對象上,這步驟非常重要,由於多數缺少說明,這里很容易多走彎路。

bdmap.add()
#bdmap.add(series_name="上海浦東xx點",data_pair=[]) #這里數據data 可以空

 

 最后,再生成地圖html
   bdmap.render()
 # bdmap.render("test.html")

 

這樣最大簡化了主函數

通過pandas 提取Excel 中的經緯度,然后將數據傳遞給生成函數,最后渲染 百度地圖 js網頁。

if __name__ == "__main__":
    data = pd.read_excel("data.xls")
    Mymap = creatMap(data)
    Mymap.render("test.html")

 

效果簡圖

 

使用過程中,需要注意:

 

地圖上的點,用item 來表示

如果是多個散點,用scatter (默認),導航路線改為liner

修改單點的說明,在TooltipOpts中定義

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM