高德地图+echarts 大屏项目

本文介绍了一个使用高德地图和echarts创建的3D马拉松大屏项目,通过初始化地图并设置3D视角,动态生成马拉松路线。利用AMap.Driving获取起点和终点之间的路径,绘制路线和路标。同时,实现了马拉松当前位置的动态跟踪,包括移动物体的轨迹回放和视野跟随功能。两侧报表借助datav和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做的,很简单,这里就不介绍了,最后的效果
在这里插入图片描述

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

爱吃土豆丝嗯z

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值