微信小程序开发交流qq群 173683895
承接微信小程序开发。扫码加微信。
需求:
在一个excel的xlsx表格中有很多起点的地址和终点的地址,要批量计算两个地址之间的距离和驾车时间,按照百度地图的最短距离计算。最后把得出的行驶距离和驾车时间填充至xlsx表格中的相应地址
实现思路:
1.把excel表格中的数据导入数据库
2.通过接口请求数据库,得到所有的起始地址信息并且保存到前端
3.把所有的中午地址转换成经纬度并且存入数据库(因为中午地址是无法直接计算出行驶距离和驾车时间的)
4.请求数据库中的起始点经纬度,计算出行驶距离和驾车时间再保存到数据库
5.数据库导出到excel的xlsx表格,完成
生产场景:
微信小程序开发者工具 + phpstudy + mysql + 百度地图开放平台 - JavaScript API (两个接口,逆/地址解析 和 路线规划)
先建数据库, 结构图如下:产数分别是起点地址,终点地址,距离,时间
小程序前端源码:
var util = require('../../utils/util.js');
// pages/index/index.js
var aa_data, i = 1271,y = 0;
Page({/*** 页面的初始数据*/data: {},// 保存到数据库ddddddd(distance, duration) {var that = this;var data = {duration: duration,distance: distance,sss: this.data.data[i].sss,eee: this.data.data[i].eee,}wx.request({url: 'http://localhost/excel/save.php',data: data,success: function(res) {}})},// 计算起点坐标和终点坐标的最短驾车距离和驾车时间cccccccc(e) {var that = this;var aaa = e.sss.split(',')console.log(aaa)var a_ssss = aaa[1].substring(0, 10) + ',' + aaa[0].substring(0, 10)if (e.eee=='-'){setTimeout(function () {i = i + 1;console.log(i)// that.cccccccc(aa_data[i])}, 300)return}var bbb = e.eee.split(',')console.log(a_ssss)var a_eeee = bbb[1].substring(0, 10) + ',' + bbb[0].substring(0, 10)wx.request({url: 'http://api.map.baidu.com/direction/v2/driving?origin=' + a_ssss + '&destination=' + a_eeee + '&ak=MGIf4Hhwkx9GWrjDh2cVGKk1hQr5tcb8',data: {},success: function(res) {var distance = res.data.result.routes[0].distancevar duration = res.data.result.routes[0].durationconsole.log('最佳路线:', distance + '米', parseInt(duration / 60) + '分钟')that.ddddddd(distance, parseInt(duration / 60))setTimeout(function () {i = i + 1;console.log(i)that.cccccccc(aa_data[i])}, 300)}})},/*** 生命周期函数--监听页面加载*/onLoad: function(options) {var that = this;wx.request({url: 'http://localhost/excel/show.php',data: {location},success: function(res) {console.log(res.data)aa_data = res.datathat.cccccccc(aa_data[i])// that.bbbbbb(aa_data[i].sss)that.setData({data: res.data})}})},// 地址转换成经纬度bbbbbb(add) {var that = this;var url = 'http://api.map.baidu.com/geocoder/v2/';var data = {address: add.length > 35 ? add.substring(0, 35) : add,output: 'json',ak: 'LGPktyrfCarUmfPwDDrL1nG6mlhlkLwA'}util.request(url, 'post', data, '', function(res) {var location = res.data.result.location;console.log(location);wx.request({url: 'http://localhost/excel/sss.php',data: {sss: location.lng + ',' + location.lat,add},success: function(res) {console.log(res.data);console.log(i)i = i + 1;if (i < aa_data.length) {setTimeout(function() {if (aa_data[i].sss == '-') {i = i + 1;that.bbbbbb(aa_data[i].sss)} else {that.bbbbbb(aa_data[i].sss)}}, 300)} else {}}})})},// excel导入数据库aaaaaaaa() {wx.request({url: 'http://localhost/excel/excel.php',data: {location},success: function(res) {console.log(res.data)}})},
})
<!--pages/index/index.wxml-->
<button bindtap='aaaaaaaa'>加载到数据库</button>
<button bindtap='cccccccc'>经纬度计算出时间,路程</button>
后端源码下载 https://download.csdn.net