Baidu JSAPI Three 登山路线可视化 Demo(climb)
项目简介
本项目演示如何基于 React + @baidumap/mapv-three + Three.js,在三维地球环境下可视化真实的登山路线(如泰山),并结合百度地图MCP(多云平台)API自动规划、生成和展示步行路线。
主要功能
- 通过 MCP API 自动获取真实可行走的登山路线(如泰安站-红门-玉皇顶、盘山登山道等),并生成标准 GeoJSON 路线数据。
- 使用 @baidumap/mapv-three 在三维地球上渲染路线,支持动态线条动画。
- 路线高度坐标统一设置为 1,避免与底图重合。
MCP 交互与数据生成流程
- 地理编码与POI检索:
- 通过 MCP 地理编码接口获取起点(如"泰安站")和终点(如"泰山玉皇顶")的经纬度。
- 检索登山口、景区入口等关键节点,确保路线真实可走。
- 步行路线规划:
- 使用 MCP 步行路线规划接口,获取详细的步行导航路径(包含每一步的经纬度坐标)。
- 若需跨多个景区节点,分段调用API并拼接完整路线。
- GeoJSON 数据生成:
- 将 MCP 返回的路径点序列,统一转换为 GeoJSON LineString,第三维高度全部设为 1。
- 结果写入
climb/data/climb.geojson,便于前端直接加载。
- 前端可视化:
- 前端通过
mapvthree.GeoJSONDataSource.fromURL加载 geojson 路线。 - 使用
FatLine组件渲染主路线和动态飞线动画。
- 前端通过
依赖安装
npm install --save @baidumap/mapv-three three react react-dom
npm install --save-dev webpack webpack-cli copy-webpack-plugin html-webpack-plugin @babel/core @babel/preset-env @babel/preset-react babel-loader
构建与运行
npx webpack
# 生成 dist/ 目录,浏览器打开 dist/index.html 预览
目录结构
climb/
├── data/
│ └── climb.geojson # 由MCP自动生成的登山路线数据
├── image/ # 效果截图
├── src/
│ ├── Demo.jsx # 地球与路线可视化主组件
│ └── index.js # 入口
├── webpack.config.js # 构建配置
├── package.json # 依赖
└── README.md # 项目说明
主要代码说明
src/Demo.jsx:- 初始化三维地球,设置百度地图AK。
- 加载 climb.geojson 路线,使用 FatLine 渲染主线和动态飞线。
climb/data/climb.geojson:- 由 MCP 步行路线API自动生成,包含完整的登山路线坐标。
MCP 路线生成示例(以泰山为例)
- 地理编码获取"泰安站"与"泰山玉皇顶"经纬度。
- 步行路线规划API获取从泰安站-红门-玉皇顶的详细步行路径。
- 路径点序列转为GeoJSON,第三维全部为1。
- 前端加载并渲染。
注意事项
- 需替换
Demo.jsx中mapvthree.BaiduMapConfig.ak为你自己的百度地图开发者密钥。 - 路线数据如需更新,可重新调用 MCP API 生成 climb.geojson。