微信小程序中使用腾讯地图,导航到目的地

1.效果图如下:(点击地图可导航,从用户当前位置到目的地)

微信小程序中使用腾讯地图,导航到目的地_第1张图片
微信小程序中使用腾讯地图,导航到目的地_第2张图片
微信小程序中使用腾讯地图,导航到目的地_第3张图片

2. wxml文件中
(1)目标地址location

微信小程序中使用腾讯地图,导航到目的地_第4张图片



  
    
  
  {{location}}

(2)地图map

微信小程序中使用腾讯地图,导航到目的地_第5张图片



  
    
  

3. js文件中
(1)前提是已经申请了腾讯地图的密钥,下载js放在utils文件中,在js文件中引入

在这里插入图片描述

var app = getApp();
// 引入SDK核心类
var QQMapWX = require('../../utils/qqmap-wx-jssdk.js');
// 实例化API核心类
var qqmapsdk;
(2)页面的初始数据,包括地址location,纬度latitude,经度longitude和图标定位markers

微信小程序中使用腾讯地图,导航到目的地_第6张图片

Page({
  data: {
    phone: "",
    location: "",
    latitude: "",
    longitude: "",
    // 图标定位
    markers: [],
  },
(3)wx.request请求后台数据,包括location,latitude,longitude,返回的经纬度也赋给markers数组(定位图标所需)

微信小程序中使用腾讯地图,导航到目的地_第7张图片
微信小程序中使用腾讯地图,导航到目的地_第8张图片

// 数据加载
  onLoad: function (options) {
    var that = this;
    // 发送请求,GET
    // 成功后台返回location,latitude,longitude
    wx.request({
      url: 'https://XXXXXX?userId=' + app.id,
      method: 'GET',
      header: { 'content-type': 'application/x-www-form-urlencoded' },
      success: function (res) {
        that.setData({
          // 地址+经纬度
          location: res.data.data.address,
          latitude: res.data.data.lat,
          longitude: res.data.data.lng,
          // 电话
          phone: res.data.data.phone,
          // 定位标志的经纬度
          markers: [{
            latitude: res.data.data.lat,
            longitude: res.data.data.lng,
          }]
        });
      },
      fail: function (res) {
        console.log('失败了');
      }
    });
  },
(4)点击地图,先调用wx.getLocation获取当前用户的经纬度(导航所需),成功之后,再调用wx.openLocation打开地图

微信小程序中使用腾讯地图,导航到目的地_第9张图片

// 地图
  onReady: function (e) {
    this.mapCtx = wx.createMapContext('myMap')
  },
// 地图导航
  getLoc: function (e) {
    // console.log(e.currentTarget.id);  // 获取当前点击的数组下标
    var that = this;
    wx.getLocation({
      type: 'gcj02', // 默认为wgs84的gps坐标,如果要返回直接给openLocation用的火星坐标,可传入'gcj02'
      success: function (res) {
        //使用微信内置地图查看位置接口
        wx.openLocation({
          latitude: parseFloat(that.data.latitude),  // 要去的地址经度,浮点数
          longitude: parseFloat(that.data.longitude),  // 要去的地址纬度,浮点数
          name: '终点位置',  // 位置名
          address: that.data.location,  // 要去的地址详情说明
          scale: 18,   // 地图缩放级别,整形值,范围从1~28。默认为最大
          infoUrl: 'http://www.gongjuji.net'  // 在查看位置界面底部显示的超链接,可点击跳转(测试好像不可用)
        });
      },
      cancel: function (res) {
        console.log('地图定位失败');
      }
    })
  },

希望对你有帮助,若有疑问可留言讨论,谢谢~

你可能感兴趣的:(微信小程序)