这是我做出来的自动规划效果,比较潦草 功能勉勉强强算是实现了的
在微信小程序中使用腾讯地图服务
虽然map组件使我们可以很方便的使用地图,但是map组件只提供了最基本的地图显示功能,同时,微信小程序提供的关于地图的API也只是提供了一些简单的功能,在实际中无法满足我们的各种需求,如果需要使用到路线规划,距离计算等功能,我们可以在微信小程序中接入腾讯地图,高德地图,百度地图等服务,再结合map组件,去实现我们需要的功能
下面以腾讯地图为例来介绍如何在微信小程序中使用腾讯地图服务
1、密钥的申请以及域名的设置
在微信小程序中使用腾讯地图服务大致需要进行如下几个过程:
(1)申请开发者密钥
这里需要填写Key的名称,名称可以根据实际项目应用来命名,申请成功后,会生成一串开发者密钥
(2)开通webserviceAPI服务
a、点击右上角的控制台
b、选择key管理
c、进入设置,勾选webserviceAPI,点击保存
(3)域名的配置
上面的两个步骤都是在腾讯位置服务平台上进行的操作,要进行域名的配置,还需要登录微信公众平台进行域名的配置
在开发小程序时,我们都会使用自己的APPID进行开发,只有配置了相关的域名,在请求时才能向指定的域名发送请求
在“设置” -> “开发设置”中设置request合法域名,添加https://apis.map..com
(4)下载微信小程序JavaScriptSDK
如果完成了上面几个步骤,我们就可以在微信小程序中使用腾讯地图服务啦,在微信小程序中新建一个项目,写入APPID,记得这个APPID需要在微信公众平台中进行了域名的配置,不然会报错

2、实现路线规划
下面举一个简单的小例子,给定起点和终点经纬度,计算出起点和终点之间的路线
首先,需要引入我们刚才下载的JavaScriptSDK
// 引入SDK核心类 var MapWX = require('xxx/map-wx.js');
讯享网
进行API核心类的实例化
讯享网// 实例化API核心类 var mapsdk = new MapWX({ key: '开发密钥(key)' // 必填 });
接着,我们需要通过调用路线规划的接口direction获取路线,direction接口可以提供驾车、骑行、步行、公交等路线规划功能
direction接口传入的参数如下
(1)mode
String,路线规划选择,可选值:'driving'(驾车)、'walking'(步行)、'bicycling'(骑行)、'transit'(公交),默认:'driving'
(2)from
String格式:lat<纬度>,lng<经度>(例:from: '39.,116.')
Object格式:{latitude: 纬度,longitude: 经度}(例:from: { latitude: 39.,longitude: 116.})
(3)to
String格式:lat<纬度>,lng<经度>(例:location: '39.,116.')
Object格式:{ latitude: 纬度,longitude: 经度}(例:to: { latitude: 39.,longitude: 116.})
下面给一个根据起点和终点实现路线规划的例子
<!--wxml--> <map id="myMap" style="width: 100%; height: 300px;" longitude="{
{longitude}}" latitude="{
{latitude}}" scale='16' polyline="{
{polyline}}" show-location></map> <!--js--> // 引入SDK核心类 var MapWX = require('xxx/map-wx.js'); // 实例化API核心类 var mapsdk = new MapWX({ key: '开发密钥(key)' // 必填 }); Page({ data: { srcLat: '起点经度', srcLng: '起点纬度', dstLat: '终点经度', dstLng: '起点纬度', latitude: '', longitude: '' }, onLoad() { var _this = this; //调用距离计算接口 mapsdk.direction({ mode: 'driving',//可选值:'driving'(驾车)、'walking'(步行)、'bicycling'(骑行),不填默认:'driving',可不填 //from参数不填默认当前地址 from: { latitude: _this.data.srcLat, longitude: _this.data.srcLng }, to: { latitude: _this.data.dstLat, longitude: _this.data.dstLng }, success: function (res) { console.log(res); var ret = res; var coors = ret.result.routes[0].polyline, pl = []; //坐标解压(返回的点串坐标,通过前向差分进行压缩) var kr = ; for (var i = 2; i < coors.length; i++) { coors[i] = Number(coors[i - 2]) + Number(coors[i]) / kr; } //将解压后的坐标放入点串数组pl中 for (var i = 0; i < coors.length; i += 2) { pl.push({ latitude: coors[i], longitude: coors[i + 1] }) } console.log(pl) //设置polyline属性,将路线显示出来,将解压坐标第一个数据作为起点 _this.setData({ latitude:pl[0].latitude, longitude:pl[0].longitude, polyline: [{ points: pl, color: '#FF0000DD', width: 4 }] }) }, fail: function (error) { console.error(error); }, complete: function (res) { console.log(res); } }); } })
这是从这个大佬的网站学到的知识点,快做笔记!还有好多细节方面的东西等待我们去学习!https://www.cnblogs.com/Yellow-ice/p/11133283.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/45462.html