概要

腾讯地图WebService API是基于HTTPS/HTTP协议的数据接口,在微信小程序中可通过wx.request进行调用,
同时还可以结合小程序map组件实现数据叠加展示、交互等应用需求。

第1步:注册开发者

注册位置服务开发者,并创建服务调用key(key是调用API的身份标识,作为必填参数之一传递给API接口)
点此进入 应用管理 创建或管理key,若未注册或登录可按提示进行,详情可参考WebServcieAPI入门指南

第2步:服务器域名配置


在正式请求前,您需要在微信小程序中进行域名配置。

进入微信小程序首页。在【开发管理】界面,选择【开发设置】


下滑页面,在【服务器域名】中点击修改按钮


修改【request合法域名】为腾讯地图服务api域名,点击【保存并提交】即可。


第3步:开发

微信小程序中调用 WebService API 接口,需通过微信小程序提供的 wx.request 进行接口请求,如下

wx.request({
  url: '接口url',  //仅为示例,并非真实的接口地址
  data: {
    x: '',
    y: ''
  },
  header: {
    'content-type': 'application/json' // 默认值
  },
  success (res) {
    console.log(res.data)
  }
})

详情可参考微信小程序开发文档

实例1:地点搜索

本实例通过调用腾讯地点搜索API,搜索北京市内的美食(餐馆)地点,并结合小程序map组件显示到地图中。
关于地点搜索API的全部功能及使用方法,可参见:地点搜索API文档
微信小程序map组件可参见:微信小程序map组件开发文档
本示例实现效果

index.js设置

// index.js
// 获取应用实例
const app = getApp()

Page({
  data: {
    latitude: 39.909088,
    longitude: 116.397643
  },
  
  buttonSearch(e){
    var _this = this
    var allMarkers = []
    //通过wx.request发起HTTPS接口请求
    wx.request({
      //地图WebserviceAPI地点搜索接口请求路径及参数(具体使用方法请参考开发文档)
      url: 'https://apis.map.qq.com/ws/place/v1/search?page_index=1&page_size=20&boundary=region(北京市,0)&keyword=美食&key=您的key',
      success(res){
        var result = res.data
        var pois = result.data
        for(var i = 0; i< pois.length; i++){
          var title = pois[i].title
          var lat = pois[i].location.lat
          var lng = pois[i].location.lng
          console.log(title+","+lat+","+lng)
          const marker = {
            id: i,
            latitude: lat,
            longitude: lng,
            callout: {
              // 点击marker展示title
              content: title
            }
          }
          allMarkers.push(marker)
          marker = null
        }
        
        _this.setData({
          latitude: allMarkers[0].latitude,
          longitude: allMarkers[0].longitude,
          markers: allMarkers
        })
      }
    })
  }
})

index.wxml设置

<!--index.wxml-->
<view class="container">
  <map id="map"
    class="map"
    markers="{{markers}}"
    longitude="{{longitude}}" latitude="{{latitude}}">
  </map>
</view>

<button size="mini" bindtap="buttonSearch">检索“美食”</button>


实例2:驾车路线规划

本实例通过调用腾讯驾车路线规划API,实现指定起、终点的路线计算,并结合小程序map组件中的polyline进行呈现。
驾车路线规划API的全部功能及使用方法,可参见:驾车路线规划API文档
微信小程序map组件可参见:微信小程序map组件开发文档
本示例实现效果

index.js 设置

// index.js
// 获取应用实例
const app = getApp()

Page({
  data: {
    latitude: 39.909088,
    longitude: 116.397643
  },
  
  buttonDriving(e){
    var _this = this
    //通过wx.request发起HTTPS接口请求
    wx.request({
      //地图WebserviceAPI驾车路线规划接口 请求路径及参数(具体使用方法请参考开发文档)
      url: 'https://apis.map.qq.com/ws/direction/v1/driving/?key=您的key&from=39.894772,116.321668&to=39.902781,116.427171',
      success(res){
        var result = res.data.result
        var route = result.routes[0]
        
        var coors = route.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] })
          }
          _this.setData({
            // 将路线的起点设置为地图中心点
            latitude:pl[0].latitude,
            longitude:pl[0].longitude,
            // 绘制路线
            polyline: [{
              points: pl,
              color: '#58c16c',
              width: 6,
              borderColor: '#2f693c',
              borderWidth: 1
            }]
          })
      }
    })
  }
})

index.wxml 设置

<!--index.wxml-->
<view class="container">
  <map id="map"
    class="map"
    polyline="{{polyline}}"
    longitude="{{longitude}}" latitude="{{latitude}}">
  </map>
</view>

<button size="mini" bindtap="buttonDriving">算路请求</button>

这篇文章对您解决问题是否有帮助?

已解决
未解决