微信小程序实现轨迹回放
在微信小程序实现轨迹回放的效果
1、wxml
<map id="map" longitude="{{longitude}}" latitude="{{latitude}}" scale="16" bindcontroltap="controltap" bindmarkertap="markertap" markers="{{markers}}" polyline="{{polyline}}" bindregionchange="regionchange" show-location style="width: 100%; height:{{height}}px;" ></map> <view class="padding flex flex-wrap justify-between align-center bg-white"><button class='cu-btn bg-green shadow sm' bindtap='beginTrack'> 开始 </button><button class='cu-btn bg-orange shadow sm' bindtap='pauseTrack'> 暂停 </button><button class='cu-btn bg-red shadow sm' bindtap='endTrack'> 结束 </button> </view>
2、js
//index.js//获取应用实例const app = getApp()Page({ data: {StatusBar: app.globalData.StatusBar,CustomBar: app.globalData.CustomBar,height: wx.getSystemInfoSync().windowHeight,latitude: 0,longitude: 0,playIndex: 0,timer: null,markers: [],polyline: [],pointsInfo:[] }, regionchange(e) {//console.log(e.type) }, markertap(e) {//console.log(e.markerId) }, controltap(e) {//console.log(e.controlId) }, beginTrack:function(e){ }, onLoad: function (options){var that = this;wx.request({ url: 'http://**/getTrack', data: { beginTime:"开始时间",endTime:"结束时间" }, method: "post", success: function (res) {that.setData({ pointsInfo:res.data.pointsInfos, polyline: [{points: res.data.points,color: "#FF0000DD",width: 4,dottedLine: true }], markers: [{iconPath: '../../img/location.jpg',id: 0,latitude: res.data.points[0].latitude,longitude: res.data.points[0].longitude,width: 30,height: 30,title: that.data.brandNumber,callout: { content: that.data.brandNumber + ' \n 时间:' + res.data.pointsInfos[0].create_time + ' \n 速度:' + res.data.pointsInfos[0].speed + ' km/h', color: "#000000", fontSize: 13, borderRadius: 2, bgColor: "#fff", display: "ALWAYS", boxShadow: "5px 5px 10px #aaa"} }], latitude: res.data.points[0].latitude, longitude: res.data.points[0].longitude,}) }}) }, /*** 开始*/ beginTrack:function(){var that = this;var i = that.data.playIndex == 0 ? 0 : that.data.playIndex;that.timer = setInterval(function () { i ++ that.setData({playIndex: i,latitude: that.data.polyline[0].points[i].latitude,longitude: that.data.polyline[0].points[i].longitude,markers: [{ iconPath: '../../img/car/e0.png', id: 0, latitude: that.data.polyline[0].points[i].latitude, longitude: that.data.polyline[0].points[i].longitude, width: 30, height: 30, title: that.data.brandNumber, callout: {content: that.data.brandNumber + ' \n 时间:' + that.data.pointsInfo[i].create_time + ' \n 速度:' + that.data.pointsInfo[i].speed + ' km/h',color: "#000000",fontSize: 13,borderRadius: 2,bgColor: "#fff",display: "ALWAYS",boxShadow: "5px 5px 10px #aaa" }}] })if ((i+1) >= that.data.polyline[0].points.length) { that.endTrack(); }}, 500)},/*** 暂停*/ pauseTrack:function(){var that = this; clearInterval(this.timer) }, /*** 结束*/ endTrack:function(){var that = this; that.setData({ playIndex: 0, latitude: that.data.polyline[0].points[0].latitude, longitude: that.data.polyline[0].points[0].longitude, markers: [{iconPath: '../../img/car/e0.png',id: 0,latitude: that.data.polyline[0].points[0].latitude,longitude: that.data.polyline[0].points[0].longitude,width: 30,height: 30,title: that.data.brandNumber,callout: { content: that.data.brandNumber + ' \n 时间:' + that.data.pointsInfo[0].create_time + ' \n 速度:' + that.data.pointsInfo[0].speed + ' km/h', color: "#000000", fontSize: 13, borderRadius: 2, bgColor: "#fff", display: "ALWAYS", boxShadow: "5px 5px 10px #aaa"} }]}) clearInterval(this.timer) }})
后台数据使用的是百度鹰眼的数据。最终效果:
作者:KitFung-P
来源链接:https://www.cnblogs.com/pengjf/p/10870021.html
版权声明:
1、JavaClub(https://www.javaclub.cn)以学习交流为目的,由作者投稿、网友推荐和小编整理收藏优秀的IT技术及相关内容,包括但不限于文字、图片、音频、视频、软件、程序等,其均来自互联网,本站不享有版权,版权归原作者所有。
2、本站提供的内容仅用于个人学习、研究或欣赏,以及其他非商业性或非盈利性用途,但同时应遵守著作权法及其他相关法律的规定,不得侵犯相关权利人及本网站的合法权利。
3、本网站内容原作者如不愿意在本网站刊登内容,请及时通知本站(javaclubcn@163.com),我们将第一时间核实后及时予以删除。