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

 

posted @ 2020-11-24 00:17  nerocm  阅读(1147)  评论(0编辑  收藏  举报