前言:
今天兄弟们对“js轨迹展示”大体比较着重,小伙伴们都需要剖析一些“js轨迹展示”的相关内容。那么小编同时在网络上网罗了一些有关“js轨迹展示””的相关资讯,希望大家能喜欢,同学们快快来学习一下吧!本文介绍如何通过React使用百度地图实现轨迹动画
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(); } };
版权声明:
本站文章均来自互联网搜集,如有侵犯您的权益,请联系我们删除,谢谢。
标签: #js轨迹展示