高德地图+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做的,很简单,这里就不介绍了,最后的效果
在这里插入图片描述

  • 1
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 4
    评论
首先,使用高德地图 API 获取地图,并添加 marker。点击 marker 后,获取该地点的经纬度,然后调用 echarts 的 geo 组件,绘制迁徙图。 以下是一个简单的示例代码: ```html <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>高德地图+echarts迁徙图</title> <script type="text/javascript" src="https://webapi.amap.com/maps?v=1.4.15&key=你的高德地图APIkey"></script> <script type="text/javascript" src="https://cdn.bootcdn.net/ajax/libs/echarts/4.9.0/echarts.min.js"></script> <style> #map { width: 100%; height: 500px; } </style> </head> <body> <div id="map"></div> <script type="text/javascript"> // 初始化地图 var map = new AMap.Map('map', { center: [116.397428, 39.90923], zoom: 10 }); // 添加 marker,并绑定点击事件 var marker = new AMap.Marker({ position: [116.397428, 39.90923], map: map, title: '北京市', clickable: true }); marker.on('click', function() { // 获取经纬度 var lnglat = marker.getPosition(); // 绘制迁徙图 var myChart = echarts.init(document.getElementById('map')); myChart.setOption({ geo: { map: 'china' }, series: [{ type: 'lines', coordinateSystem: 'geo', polyline: { // 迁徙线的坐标点 coords: [ [lnglat.lng, lnglat.lat], [120.15, 30.28] ] } }] }); }); </script> </body> </html> ``` 上面的示例代码中,我们使用了 AMap.Marker 类来添加 marker,并通过 marker.on('click') 绑定了点击事件。在点击事件中,我们获取了 marker 的经纬度,然后调用 echarts 绘制迁徙图。 当然,以上只是一个简单的示例,实际应用中还需要根据需求进行一些调整和优化。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

爱吃土豆丝嗯z

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

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

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

打赏作者

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

抵扣说明:

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

余额充值