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中定義
