行业知识
实现高德地图实时显示多marker多轨迹功能(APP H5 Web)
2026-11-13 03:46:26
来源:互联网转载
最近在实际业务中需要实现 雷达探测飞行器的功能:在地图上可能会实时出现多个目标物在移动,需求是要实现多个目标物的实时轨迹 和 目标marker的实现,话不多说直接开始!
1.步骤一::加载高德地图Key 申请地址:我的应用 | 高德控制台
2.步骤二:初始化地图
//初始化地图 initAmap() { this.map = new AMap.Map("container", { resizeEnable: true, center: [114.4293, 30.5162], zoom: 12 }); //覆盖物的圈圈 var circle = new AMap.Circle({ map: this.map, center: new AMap.LngLat("114.42935", "30.5162"), //圆心位置 radius: 4500, //半径 单位:米 strokeColor: "#1a61d3", //线颜色 strokeOpacity: 1, //线透明度 strokeWeight: 3, //线粗细度 fillColor: "#d3e3fd", //填充颜色 fillOpacity: 0.35, //填充透明度 }); this.manyPersonWays(this.map) // 最重要的method 方法实现 }, 3.步骤三:功能实现
一,目标点位数据模拟
// 武汉洪山区的经纬度范围 (可以根据你自己的需求调整) const minLatitude = 30.505 ; // 最小纬度 const maxLatitude = 30.529; // 最大纬度 const minLongitude = 114.397; // 最小经度 const maxLongitude = 114.428; // 最大经度 // 创建地图时初始化折线对象数组和颜色数组 var polylines = []; var colors = ['#3366FF', '#FF0000', '#00FF00', '#495ac5', '#FF00FF', '#FF00FF']; // 不同颜色的数组 // 初始化标记点的位置(模拟) var markers = []; for (var i = 0; i二,更新标记位置(也写在 this.manyPersonWays里面)
// 更新标记位置的函数(模拟)function updateMarkers(markers) {// 模拟每个标记位置的变化for (var i = 0; i三,更新图标 (可根据自己需求调整 因为是多个目标所以需要多个图标展示不同状态)
// 更新标记图标 function updateMarkerIcon(marker) {// 获取当前marker的状态// console.log(marker.w.status,'marker'); // 根据状态设置不同的图标// marker.setAngle(marker.w.angle); marker.setIcon(getIconUrl(marker.w.status)); } // 根据状态获取图标 URLfunction getIconUrl(status) { switch (status) { case 1: return 'static/yellow.png'; // 黄色图标 URL case 2: return 'static/blue.png'; // 蓝色图标 URL case 3: return 'static/perpul.png'; // 紫色图标 URL default: return 'static/blue.png'; // 默认图标 URL } }四,开始绘制点标记的轨迹 并且展示不同的颜色
// 绘制标记点的路线并指定颜色function updatePolylinePath(marker, color) { var path = []; // 折线路径数组 if (marker.previousPosition) { // 如果存在上一个位置,则绘制从上一个位置到当前位置的折线 path.push(marker.previousPosition); // 上一个位置 path.push(marker.getPosition()); // 当前位置 // 在路径数组中添加起点和终点 var startPoint = path[0]; var endPoint = path[path.length - 1]; path.unshift(startPoint); // 添加起点 path.push(endPoint); // 添加终点 // 创建折线对象,并指定颜色和箭头标记 var polyline = new AMap.Polyline({ map: map, path: path, // 折线路径 strokeColor: color, // 指定颜色 strokeOpacity: 1, strokeWeight: 3, strokeStyle: 'solid', strokeDasharray: [10, 5], // 线样式为虚线 showDir: true // 显示箭头标记 }); // 将折线对象添加到数组中 polylines.push(polyline); } // 更新标记点的上一个位置 marker.previousPosition = marker.getPosition();}五。模拟实时数据更新的操作(可以改成接口数据 更新)
// 生成指定范围内的随机数function getRandomInRange(min, max) { return Math.random() * (max - min) + min;}// 每秒更新标记位置setInterval(function() { updateMarkers(markers);}, 1000);
上一篇:怎么在服务器上做网页?
下一篇:机架式服务器怎么操作?