记忆一隅

利用pyecharts制作自己的足迹地图

2024-01-01 · 3 min read
折腾 python

之前有在高德和百度地图的软件上看到自己的足迹地图,不过这两个软件因为我使用的原因,数据都不完整。很多之前去过的地方并没有标记,或者只是坐火车坐高铁路过而已的地方也都记录了下来。然后就萌生了自己能不能做一个属于自己的足迹地图,且能够方便的嵌入在博客中。

尝试

在一番搜索研究,看了看已有的开源项目,首先看到了基于echarts的方案。仔细研究了一番,发现常规的geojson文件都是按照省份划分,如果想要精确到市级,要么做点击下穿,要么要自己花时间去做城市级的json数据整合。一番搜索没有找到现成的数据,又不想花额外的时间,随放弃。

研究

又经过一番搜索,发现了pyecharts,echarts的python开源版本,echarts本身则是基于JavaScript的。pyecharts的官方示例直接就带了一个全国市级地图示例,这不正是我想要的吗。不过这个示例还有不少额外的标记,不太需要,经过又一番搜寻和文档阅读,首先找到了Python-pyecharts生成精确到市的地图, 经过一番魔改修改成了这样,成功把各种标识全部关闭:

from pyecharts import options as opts
from pyecharts.charts import Map
finished=["北京市", "天津市", "南京市", "合肥市","六安市","安庆市","黄山市","池州市","淮南市","焦作市","西安市","福州市","杭州市","绍兴市","苏州市"]#对应地图中的名字
citylist=[]
for each in finished:
    citylist.append([each,100])
map_data = (
    Map()
    .add("中国地图", citylist, "china-cities", is_map_symbol_show=False,)
    .set_series_opts(label_opts=opts.LabelOpts(is_show=False))
    .set_global_opts(
        title_opts=opts.TitleOpts(title="我的城市足迹",is_show=False),
        legend_opts=opts.LegendOpts(is_show=False),  # 隐藏图例
        visualmap_opts=opts.VisualMapOpts(is_show=False),
    )
)
map_data.render("citymap_footprint.html")

完善一下

但是这个时候,pyecharts生成的html文件,地图只在左上角的角落里,缩放之后更是直接被截断。按pyecharts学习2--自适应屏幕居中显示这个博客内容又处理了一番,唉嘿,输出的文件是我想要的样子了,一个全屏可自适应的,除了足迹以外无标记地图。

效果

<iframe src= "/citymap_footprint.html" style= "border:none; width: 100%; height: 50vh; "  scrolling="no"></iframe>

最后使用iframe嵌入到文章或者博客主题中,完美,效果如下:

🚅我的城市足迹

我最后是将我的足迹嵌入到了关于页面,毫无违和感,非常合适。可放大缩小,以后更新也只需要替换一下iframe嵌入的html文件即可。