Google Map-鼠标移动画线(polyline)

本文介绍了一种利用Google Maps API实现鼠标绘制跟随效果的方法,并探讨了如何将此技术应用于GPS轨迹显示,即将多个GPS定位点用polyline连接起来以展示移动轨迹。

老是说“因工作需要而写某某文章”感觉没什么意思!ps:没办法大部分是这样子,汗! 在实现GPS轨迹移动(即:将GPS多个定位数据用polyline连接起来)的过程中,突发奇想,实现个让线跟着鼠标移动的demo.看效果:

点击左键描点,右键停止画线,线跟随鼠标移动

原文地址: Google Map-鼠标移动画线(polyline) | http://orgcent.com/google-map-api-polyline/
### 如何使用 `el-amap-polyline` 组件实现轨迹回放 为了实现在 Vue-Amaz 中通过 `el-amap-polyline` 组件完成轨迹回放功能,可以结合 Element UI 的 Slider 和高德地图 API 动态更新路径和标记位置。以下是详细的实现方法以及示例代码。 #### 使用 `el-amap-polyline` 实现轨迹回放的核心逻辑 1. **初始化地图与轨迹数据** 需要先定义好地图的基础配置项(中心点、缩放级别等),并准备一组 GPS 数据作为轨迹点集合。 2. **动态生成 Polyline** 利用 `el-amap-polyline` 组件绘制多段线,并根据实时的滑块值控制显示的部分轨迹。 3. **绑定 Marker 移动动画** 将 Marker 与当前播放的时间戳关联起来,在用户拖动进度条时同步调整其位置。 4. **集成 Slider 控件** 借助 Element UI 提供的 Slider 来管理时间轴上的移动比例,从而达到精确控制的目的。 下面是完整的代码示例: ```html <template> <div class="amap-page-container"> <!-- 地图容器 --> <el-amap vid="amapDemo" :center="mapData.center" :zoom="mapData.zoom" class="amap-demo"> <!-- 轨迹线条 --> <el-amap-polyline v-if="currentPath.length > 0" :path="currentPath" stroke-color="#FFA500" /> <!-- 车辆图标 --> <el-amap-marker vid="carmarker" :position="carPosition" icon="/images/car-icon.png" auto-rotation="true"/> </el-amap> <!-- 进度条控件 --> <el-slider v-model="sliderValue" @input="onSliderChange"></el-slider> </div> </template> <script> export default { data() { return { mapData: { center: [116.478935, 39.997761], zoom: 12, }, lineArr: [], // 存储所有的GPS坐标点 sliderValue: 0, // 当前滑块的位置(百分比) carPosition: null, // 车辆当前位置 }; }, computed: { currentPath() { const index = Math.floor((this.sliderValue / 100) * this.lineArr.length); return this.lineArr.slice(0, index).map(item => item.position); // 返回部分路径 } }, methods: { onSliderChange(value) { const currentIndex = Math.floor((value / 100) * this.lineArr.length); if (currentIndex >= 0 && currentIndex < this.lineArr.length) { this.carPosition = this.lineArr[currentIndex].position; } } }, created() { // 模拟生成轨迹数据 for (let i = 0; i < 50; i++) { this.lineArr.push({ GpsTime: `2023-03-17 15:33:${i}`, position: [116.478935 + i * 0.0001, 39.997761 + i * 0.0001] }); } // 初始化车辆起点 this.carPosition = this.lineArr[0]?.position || []; } }; </script> <style scoped> .amap-page-container { width: 100%; height: 500px; } .amap-demo { width: 100%; height: 100%; } </style> ``` 上述代码实现了以下功能: - 定义了一个包含初始中心点的地图实例[^1]; - 创建了一组模拟的 GPS 数据用于展示轨迹[^2]; - 结合 `el-amap-polyline` 显示随滑块变化而改变的一部分轨迹; - 添加了可跟随轨迹前进的车标 Marker 并支持自动旋转效果; #### 注意事项 当处理大量轨迹点时需注意性能优化问题,比如分批次加载或者简化几何图形来减少渲染压力。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值