微信小程序地图开发总结-规划路线

这是我做出来的自动规划效果,比较潦草 功能勉勉强强算是实现了的

在微信小程序中使用腾讯地图服务

  虽然map组件使我们可以很方便的使用地图,但是map组件只提供了最基本的地图显示功能,同时,微信小程序提供的关于地图的API也只是提供了一些简单的功能,在实际中无法满足我们的各种需求,如果需要使用到路线规划,距离计算等功能,我们可以在微信小程序中接入腾讯地图,高德地图,百度地图等服务,再结合map组件,去实现我们需要的功能

  下面以腾讯地图为例来介绍如何在微信小程序中使用腾讯地图服务

1、密钥的申请以及域名的设置

  在微信小程序中使用腾讯地图服务大致需要进行如下几个过程:

  (1)申请开发者密钥

    

    这里需要填写Key的名称,名称可以根据实际项目应用来命名,申请成功后,会生成一串开发者密钥

  (2)开通webserviceAPI服务

    a、点击右上角的控制台

    b、选择key管理

    c、进入设置,勾选webserviceAPI,点击保存

  (3)域名的配置

    上面的两个步骤都是在腾讯位置服务平台上进行的操作,要进行域名的配置,还需要登录微信公众平台进行域名的配置

    在开发小程序时,我们都会使用自己的APPID进行开发,只有配置了相关的域名,在请求时才能向指定的域名发送请求

    在“设置” -> “开发设置”中设置request合法域名,添加https://apis.map.qq.com

  (4)下载微信小程序JavaScriptSDK

  如果完成了上面几个步骤,我们就可以在微信小程序中使用腾讯地图服务啦,在微信小程序中新建一个项目,写入APPID,记得这个APPID需要在微信公众平台中进行了域名的配置,不然会报错

2、实现路线规划

  下面举一个简单的小例子,给定起点和终点经纬度,计算出起点和终点之间的路线

  首先,需要引入我们刚才下载的JavaScriptSDK

// 引入SDK核心类
var QQMapWX = require('xxx/qqmap-wx.js');

进行API核心类的实例化

// 实例化API核心类
var qqmapsdk = new QQMapWX({
    key: '开发密钥(key)' // 必填
});

 

 接着,我们需要通过调用路线规划的接口direction获取路线,direction接口可以提供驾车、骑行、步行、公交等路线规划功能

  direction接口传入的参数如下

  (1)mode

    String,路线规划选择,可选值:'driving'(驾车)、'walking'(步行)、'bicycling'(骑行)、'transit'(公交),默认:'driving'

  (2)from

    String格式:lat<纬度>,lng<经度>(例:from: '39.984060,116.307520')

    Object格式:{latitude: 纬度,longitude: 经度}(例:from: { latitude: 39.984060,longitude: 116.307520})

  (3)to

    String格式:lat<纬度>,lng<经度>(例:location: '39.984060,116.307520')

    Object格式:{latitude: 纬度,longitude: 经度}(例:to: { latitude: 39.984060,longitude: 116.307520})

  下面给一个根据起点和终点实现路线规划的例子

<!--wxml-->
<map id="myMap" style="width: 100%; height: 300px;"
longitude="{{longitude}}" latitude="{{latitude}}" scale='16' polyline="{{polyline}}" show-location></map>

<!--js-->
// 引入SDK核心类
var QQMapWX = require('xxx/qqmap-wx.js');
 
// 实例化API核心类
var qqmapsdk = new QQMapWX({
    key: '开发密钥(key)' // 必填
});
Page({
    data: {
        srcLat: '起点经度',
        srcLng: '起点纬度',
        dstLat: '终点经度',
        dstLng: '起点纬度',
        latitude: '',
        longitude: ''
    },
    onLoad() {
        var _this = this;
        //调用距离计算接口
        qqmapsdk.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 = 1000000;
              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

  • 22
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值