React使用百度地图实现轨迹动画

14 篇文章 0 订阅

1、引入开源文件TrackAnimation_min.js

        在react中使用react-load-script加载scrip文件

1.1 在package.json文件中引入react-load-scrip

"react-load-script": "^0.0.6",

1.2 在文件中导入react-load-scrip

import Script from 'react-load-script';

1.3 加载rackAnimation_min.js文件

render() {
    return(
      <div>
        <Script
          url="//api.map.baidu.com/library/TrackAnimation/src/TrackAnimation_min.js"
          onCreate={() => this.handleScriptCreate()}
          onError={() => this.handleScriptError()}
          onLoad={() => this.handleScriptLoad()}
        />
      </div>
    );
}

2、创建基本地图

<Map 
    center={{ lng, lat }} 
    zoom="17" 
    style={{ height: '50vh' }} 
    enableScrollWheelZoom 
    ref={this.myRef} 
>
  <NavigationControl />
  <ScaleControl />
</Map>

3、自定义一个折线轨迹

const path = [{
    'lng': 116.297611,
    'lat': 40.047363
}, {
    'lng': 116.302839,
    'lat': 40.048219
}, {
    'lng': 116.308301,
    'lat': 40.050566
}, {
    'lng': 116.305732,
    'lat': 40.054957
}, {
    'lng': 116.304754,
    'lat': 40.057953
}, {
    'lng': 116.306487,
    'lat': 40.058312
}, {
    'lng': 116.307223,
    'lat': 40.056379
}];
const point = [];
for (let i: any = 0; i <path?.length; i++) {
    point.push(new BMapGL.Point(path[i].lon, path[i].lat));
}
const draw = new BMapGL.Polyline(point);

4、创建个轨迹动画对象,并配置参数

const trackAni = new BMapGLLib.TrackAnimation(this?.myRef?.current?.map, draw, {
     overallView: true, // 动画完成后自动调整视野到总览
     tilt: 30,          // 轨迹播放的角度,默认为55
     duration: 10000,   // 动画持续时长,默认为10000,单位ms
     delay: 1000        // 动画开始的延迟,默认0,单位ms
});

5、启动动画

trackAni.start();

6、停止动画 

trackAni.cancel();         // 强制停止动画

7、重复进行动画渲染 

//轨迹
  track = () => {
    const { carList, trackAnimation } = this.state;
    const path = carList;
    const point = [];
    for (let i: any = 0; i <path?.length; i++) {
      point.push(new BMapGL.Point(path[i].lon, path[i].lat));
    }
    const draw = new BMapGL.Polyline(point);
    if(isEmptyObject(trackAnimation)){
      const trackAni = new BMapGLLib.TrackAnimation(this?.myRef?.current?.map, draw, {
        overallView: true, // 动画完成后自动调整视野到总览
        tilt: 30,          // 轨迹播放的角度,默认为55
        duration: 10000,   // 动画持续时长,默认为10000,单位ms
        delay: 1000        // 动画开始的延迟,默认0,单位ms
      });
      trackAni.start();
      this.setState({ trackAnimation: trackAni });
    } else {
      trackAnimation.start();
    }
  };

新时代农民工

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

sg_knight

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

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

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

打赏作者

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

抵扣说明:

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

余额充值