高德地图+echarts 大屏项目

高德地图+echarts 大屏项目

概述

开发了一个高德地图视角实时更新的项目demo,先看视频效果

高德地图+echarts 马拉松大屏项目

初始化地图

创建一个初始化地图的类ZMap, 写入initMap方法加载地图

initMap(option) {
    let config = {
      resizeEnable: true,
      center: [116.479126, 39.998563],
      zoom: 20,
      pitch: 65,
      rotation: 4.509173845626157,
      viewMode: '3D', //开启3D视图,默认为关闭
      buildingAnimation: true, //楼块出现是否带动画
    }

    this.map = new AMap.Map(this.id, Object.assign(config, option));

    window.map = this.map;
  }

在场景中调用即可此方法即可
在这里插入图片描述

创建马拉松路线

原理,根据起始点和终点获取中间经过的所有点,然后保存成数组,生成路线

setDriving(start, end) {
    if (!this.driving) {
      let drivingOption = {}
      this.driving = new AMap.Driving(drivingOption);
    }
    return new Promise(resolve => {
      this.driving.search(start, end, function (status, result) {
        if (status === 'complete') {
          console.log(result);
          if (result.routes && result.routes[0].steps.length) {
            
            let path = [];
            let roads = [];
            result.routes[0].steps.forEach(item => {
              roads.push({
                roadName: item.road,
                position: [item.end_location.lng, item.end_location.lat]
              })
              item.path.forEach(step => {
                path.push([step.lng, step.lat])
              })
            });
            resolve({
              path,
              roads
            })
          }
        }
      });
    })
  }

输入两个坐标即可获取所有点,根据点数组画线和路标文本

export function drawRoute(app, pathInfo) {
  app.loaderMarker({
    position: pathInfo.path[0]
  });

  app.loaderMarker({
    position: pathInfo.path[pathInfo.path.length - 1],
    icon: 'https://webapi.amap.com/theme/v1.3/markers/n/end.png'
  });

  app.loaderPolyline({path: pathInfo.path});

  pathInfo.roads.forEach(item => {
    if (item.roadName) {
      let text = app.loaderText({text: item.roadName, position: item.position})
      text.setMap(app.map);
    }
  });
}

在这里插入图片描述
接下来在创建一条线表示马拉松当前进行到的位置

passedPolyline = app.loaderPolyline({
        strokeColor: "#AF5",
        strokeWeight: 8,
      });
marker = app.loaderMarker({
        icon: '',
        position: pathInfo.path[0],
      });

最后我们在给market绑定移动物体事件,在移动物体的时候更新marker的位置和设置线条即可,此处代码可以看博客中的高德地图3D轨迹回放 + 视野跟随功能此文章,有具体的代码写法
左右两侧的报表是基于datav和echarts做的,很简单,这里就不介绍了,最后的效果
在这里插入图片描述

posted @ 2021-03-08 10:18  爱吃土豆丝嗯  阅读(46)  评论(0编辑  收藏  举报  来源