微信小程序实现轨迹回放的示例代码


Posted in Javascript onDecember 13, 2019

在微信小程序实现轨迹回放的效果

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)
 }
})

后台数据使用的是百度鹰眼的数据。最终效果:

微信小程序实现轨迹回放的示例代码

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
使用SyntaxHighlighter实现HTML高亮显示代码的方法
Feb 04 Javascript
Jquery练习之表单验证实现代码
Dec 14 Javascript
JavaScript中的style.display属性操作
Mar 27 Javascript
浅析js封装和作用域
Jul 09 Javascript
jquery插件之定时查询待处理任务数量
May 01 Javascript
javascript将异步校验表单改写为同步表单
Jan 27 Javascript
javascript+ajax实现产品页面加载信息
Jul 09 Javascript
AngularJS利用Controller完成URL跳转
Aug 09 Javascript
js 实现省市区三级联动菜单效果
Feb 20 Javascript
jquery动态添加以及遍历option并获取特定样式名称的option方法
Jan 29 jQuery
JS面向对象编程基础篇(一) 对象和构造函数实例详解
Mar 03 Javascript
封装 axios+promise通用请求函数操作
Aug 11 Javascript
微信小程序 SOTER 生物认证DEMO 指纹识别功能
Dec 13 #Javascript
vue中使用elementUI组件手动上传图片功能
Dec 13 #Javascript
使用uni-app开发微信小程序的实现
Dec 13 #Javascript
webpack DllPlugin xxx is not defined解决办法
Dec 13 #Javascript
微信小程序关键字变色实现代码实例
Dec 13 #Javascript
Servlet返回的数据js解析2种方法
Dec 12 #Javascript
微信小程序实现横向滚动导航栏效果
Dec 12 #Javascript
You might like
php实现的二分查找算法示例
2017/06/20 PHP
php ActiveMQ的安装与使用方法图文教程
2020/02/23 PHP
PHP网站常见安全漏洞,及相应防范措施总结
2021/03/01 PHP
javascript获得服务器端控件的ID的实现代码
2011/12/28 Javascript
dtree 网页树状菜单及传递对象集合到js内,动态生成节点
2012/04/14 Javascript
js返回上一页并刷新代码整理
2012/12/21 Javascript
js正则表达式中test,exec,match方法的区别说明
2014/01/29 Javascript
Jquery Ajax方法传值到action的方法
2014/05/11 Javascript
jQuery.parseJSON(json)将JSON字符串转换成js对象
2014/07/27 Javascript
NodeJS学习笔记之网络编程
2014/08/03 NodeJs
JavaScript中的Primitive对象封装介绍
2014/12/31 Javascript
jQuery给元素添加样式的方法详解
2015/12/30 Javascript
jQuery height()、innerHeight()、outerHeight()函数的区别详解
2016/05/23 Javascript
jQuery获取radio选中项的值实例
2016/06/18 Javascript
javascript轮播图算法
2016/10/21 Javascript
基于JS组件实现拖动滑块验证功能(代码分享)
2016/11/18 Javascript
Bootstrap select实现下拉框多选效果
2016/12/23 Javascript
bootstrap提示标签、提示框实现代码
2016/12/28 Javascript
微信小程序中实现手指缩放图片的示例代码
2018/03/13 Javascript
JavaScript的词法结构精华篇
2018/10/17 Javascript
微信小程序使用map组件实现检索(定位位置)周边的POI功能示例
2019/01/23 Javascript
vue 列表页跳转详情页获取id以及详情页通过id获取数据
2019/03/27 Javascript
[00:52]DOTA2齐天大圣预告片
2016/08/13 DOTA
python多线程编程方式分析示例详解
2013/12/06 Python
Python2.7简单连接与操作MySQL的方法
2016/04/27 Python
Python实现简单的2048小游戏
2021/03/01 Python
python中Pexpect的工作流程实例讲解
2021/03/02 Python
HTML5 Canvas锯齿图代码实例
2014/04/10 HTML / CSS
在C#中如何实现多态
2014/07/02 面试题
WebSphere面试题:在WebSphere里面如何部署一个应用
2015/08/02 面试题
儿科护理实习自我鉴定
2013/09/19 职场文书
十岁生日家长答谢词
2014/01/17 职场文书
化工工艺设计求职信
2014/06/25 职场文书
开展党的群众路线教育实践活动领导班子对照检查材料
2014/09/25 职场文书
Python中OpenCV实现简单车牌字符切割
2021/06/11 Python
Python 数据可视化工具 Pyecharts 安装及应用
2022/04/20 Python