基于 MapBox 构建 VuePress 的旅行地图
静态博客下旅行地图的构建方式 文
发布于
本文导览
基于 MapBox 构建 VuePress 的旅行地图
最早在 Fatesinger 上看到了旅行地图插件,目前插件只提供了 WordPress 版本。 其地图地点标记的功能类似于 iOS 和 Mac OS 相册中根据地点来查找照片的功能, 另外还提供了文章关联功能,方便访问者在文章中查看附近地点文章。
构建思路
静态博客只需在构建时生成好相关数据,便可实现类似效果:
- 地点关联文章部分,在生成静态页面时计算完成相关距离数据,筛选相近地点进行保存;
- 地图展示部分,同样在生成时输出 MapBox 所需的 GeoJSON 格式文件即可。
实现细节
- 文章标记:在文章的 frontmatter 中手动或者通过逻辑增加地点信息。
- 汇总所有带地点标记文章:按地点汇总对应文章,并查本地数据表(城市及对应的经纬度)获取地点经纬度信息。
- 计算城市间距离:根据城市地点经纬度,计算两两城市间距离,并保存每个城市临近城市信息。
- 获取地点相关文章:根据当前文章城市地点,获取临近城市对应文章,按距离排序输出即可。
- 地图数据生成:使用第2点的数据,转换并输出对应的GeoJSON格式文件即可。
使用方式
若为国内城市,只需在涉及地点的文章的 frontmatter 中,指定地点信息即可:
---
loc: 上海市
---
若在地点索引文件GeoLoc.json
文件中未找到相关地点信息,或需要增加没有相关文章的标记点,则需要手动在ExtraLoc.json
中进行维护:
{
"台北市": {
"loc": [
121.5365,
25.0192
],
"posts": [],
"img": "",
"nearby": {}
}
}
实现效果
- 自动根据文章地点标签获取经纬度信息
- 自动计算距离并获取站内相关地点文章
- 可交互式地图标记展示
- 可独立管理地点
- 深色模式切换
更新日志
Todo 暂无
1.0.0 发布
© 商业转载请联系站长获得授权;
非商业转载请注明文章来源及链接。
评论