vue3高德物流路线

1.Web开发-JSAPI文档

流程:

  1. 注册&认证个人开发者===>创建web应用====>得到 keyjscode

  • 如:key 4eed3d61125c8b9c168fc22414aaef7e

  • 如:jscode 415e917da833efcf2d5b69f4d821784b

  1. 在vue3项目中使用

代码:

  1. 按 NPM 方式使用 Loader,安装

pnpm i @amap/amap-jsapi-loader
  1. 配置安全密钥 securityJsCode

  2. 根据 参考示例-使用经纬度获取驾车规划数据,获取路线规划方案

  3. 说明❓:通过插件引入

  4. 关闭路线规划默认 marker 标记,自定义 marker 标记 

### 在 Vue 中使用高德地图 API 实现物流轨迹绘制 #### 初始化项目并引入高德地图 API 为了在 Vue 项目中集成高德地图 API 并实现物流轨迹绘制,需先确保已成功引入高德地图 JavaScript API。这可以通过在 `public/index.html` 文件内的 `<head>` 标签里加入如下脚本标签完成: ```html <script src="https://webapi.amap.com/maps?v=2.0&key=您的高德开发者Key"></script> ``` 此操作使得整个应用能够访问到 AMap 对象及其方法[^3]。 #### 创建地图实例与配置基础参数 接着,在组件内部定义一个初始化函数来创建地图对象,并设置其基本属性如中心位置、缩放级别等。通常建议将此类逻辑封装于生命周期钩子内执行,比如 mounted() 或者 setup 函数之中(视所使用的 Vue 版本而定)。下面是一个简单的例子展示如何做到这一点: ```javascript import { ref, onMounted } from &#39;vue&#39;; export default { name: "LogisticsTrack", setup() { let map = null; const initMap = () => { map = new AMap.Map(&#39;container&#39;, { zoom: 10, center: [116.397428, 39.90923], // 默认北京天安门作为初始中心点 }); loadPathData(); }; onMounted(() => { initMap(); }); return {}; } } ``` 上述代码片段展示了如何利用 Composition API 来构建响应式变量以及挂载事件处理程序;当然也可以采用 Options API 方式编写相同的功能。 #### 加载路径数据并绘制轨迹线条 当完成了地图的基础搭建之后,则可以着手准备加载实际的物流运输路线坐标集合——即所谓的“路径数据”。这些数据往往由一系列地理坐标组成,代表货物在整个配送过程中经过的不同地点。一旦获得了这样的数组形式的数据集,就可以调用 AMap.Polyline 方法将其渲染成可视化的线路图形显示出来: ```javascript const pathCoordinates = [ [经度1,纬度1], [经度2,纬度2], ... ]; function drawRoute(mapInstance) { var polyline = new AMap.Polyline({ path: pathCoordinates, strokeColor: "#FF33FF", // 线颜色 strokeWeight: 6, // 线宽 strokeOpacity: 0.9 // 线透明度 }); polyline.setMap(mapInstance); } // 假设这是异步获取真实路径的方法 async function loadPathData(){ try{ // 这里模拟了一个请求过程,请替换为真实的接口调用 await delay(500); console.log("path data loaded"); drawRoute(map); }catch(error){ console.error("Failed to fetch path data:", error); } } function delay(ms){return new Promise(resolve=>setTimeout(resolve,ms));}; ``` 这里值得注意的是,对于大型项目的开发而言,应当考虑从服务器端拉取最新的路径信息而不是硬编码固定不变的位置列表。此外,还可以进一步优化用户体验,例如允许用户点击某一段路程查看更详细的描述或者关联的照片等内容[^2]。 #### 添加动画效果以模拟车辆移动 为了让视觉呈现更加生动形象,可以在已经画好的路线上添加一个小图标用来表示正在运送物品的交通工具(如卡车),并通过定时器不断更新该图标的地理位置从而达到仿真的目的。具体做法是在每次改变 marker 的 position 属性之前计算下一个目标坐标的值,直到遍历完所有的节点为止: ```javascript let index = 0; function animateMarker(markerInstance) { if(index >= pathCoordinates.length - 1){ clearInterval(timerId); return ; } index++; setTimeout(function(){ markerInstance.setPosition(pathCoordinates[index]); animateMarker(markerInstance); }, intervalTime * Math.random()); } var marker = new AMap.Marker({ icon: "//a.amap.com/jsapi_demos/static/demo-center/icons/poi-marker-default.png", position: pathCoordinates[0] }); marker.setMap(map); animateMarker(marker); ``` 这段代码实现了基于时间间隔随机变化的速度前进的效果,其中 `intervalTime` 可根据需求自行设定合适的毫秒数值来控制速度快慢。另外,如果希望提供给访客更多交互选项的话,不妨增加一些控件让用户能自由调节播放速率甚至暂停/继续当前动作[^1]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值