使用百度地图来展示自定义的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中定义