百度地图实时动态轨迹

后端直接使用node版的socket.io推送轨迹点

const server = require('http').createServer()const socketIo = require('socket.io')(server)const CreatePoint = require('./CreatePoint.js')// 所有已连接的客户端socketIo.on('connection', (client) => {  // console.log(client)  // 断开时删除  client.on('disconnect', () => {    // 。。。  })  // 当客户端触发setPoint事件之后,socket就向客户端推送新的坐标  client.on('setPoint', (point) => {    console.log(point)    // 1. 创建一个创造坐标的实例    let CreateCustomPoint = new CreatePoint(point)    // 每隔3秒向客户端推送一次坐标    setInterval(() => {      client.emit('newPoint', CreateCustomPoint.randomAction())    }, 3000)  })})server.listen(3000, '192.168.1.202', () => {  console.log('this server is listening on port 3000')})

前端就一个发送事件和监听事件

先需要连接到socket

import VueSocketIo from 'vue-socket.io'Vue.use(new VueSocketIo({  debug: true,  // 这里的地址就是后端地址  connection: '192.168.1.202:3000',  vuex: {    store,    actionPrefix: 'SOCKET_',    mutationPrefix: 'SOCKET_'  }  // options: { path: "/my-app/" }}))
sockets: {    // socket服务器连接时触发    connect: () => {      console.log('已成功连接到socket服务器')    },    // 接收socket服务器推送的newPoint事件    newPoint(point) {      console.log(`接收到socket服务器的新坐标${point}`)      // console.log(this)      this.points.push(point)      // 关闭原来的标志物      this.mkrTool.close()      this.map.clearOverlays()      // this.map.centerAndZoom(point, 15)      // 在新坐标添加覆盖物      this.freshOverlay(point)    }  },

效果

地址

github: https://github.com/lyttonlee/...