小程序通过腾讯地图接口获取两点之间的距离

本文介绍如何使用腾讯地图JS SDK在小程序中实现多目标距离计算。通过实例演示了如何初始化SDK,设置key,并调用calculateDistance接口进行直线、驾车和步行距离的计算。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

下载地址

https://lbs.qq.com/qqmap_wx_jssdk/index.html

里面有详细的获取key的说明,小程序request配置有些落后,现在的配置位置:开发->开发配置->服务器域名

下面是代码

var QQMapWX = require('../../libs/qqmap-wx-jssdk.js');

// 实例化API核心类

var qqmapsdk = new QQMapWX({

    key: 'YOUR KEY' // 必填

});
  onLoad: function (options) {
    qqmapsdk.calculateDistance({
      mode:'straight',//可选值:'driving'(驾车)、'walking'(步行 默认),'straight'(直线) 
      from: {
        latitude: 39.984060,
        longitude: 116.307520
      },
      to: [{
        latitude: 39.984572,
        longitude: 116.30633
      }, {
        latitude: 22.5425,
        longitude: 114.04985
      }],
      success: function (res) {
        //距离
        var distance = res.result.elements['0'].distance;
        var distance1 = res.result.elements['1'].distance;
        console.info(distance);
        console.info(distance1);
      },
    })
  }

本接口可以一次添加多个目标距离,支持批量操作

### 微信小程序中集成腾讯地图获取用户当前位置 在微信小程序中,可以通过调用微信内置的地图组件以及腾讯地图的相关接口来实现获取用户的当前位置信息。以下是详细的说明和示例代码。 #### 地图初始化与用户定位 通过 `wx.getLocation` 方法可以获取到用户的当前经纬度坐标,并将其展示在地图上。此方法返回的是标准的 GPS 坐标系数据[^1]。 ```javascript // 获取用户当前位置 wx.getLocation({ type: 'gcj02', // 返回可以用于腾讯地图服务的坐标 success(res) { const latitude = res.latitude; const longitude = res.longitude; console.log('纬度:', latitude); console.log('经度:', longitude); // 更新地图中心点 this.setData({ latitude, longitude, markers: [{ iconPath: "/resources/marker.png", id: 0, latitude, longitude, width: 30, height: 30 }] }); }, fail(err) { console.error('获取位置失败:', err); } }); ``` #### 使用腾讯地图 API 进行逆地理编码 当获得用户的经纬度之后,可以进一步调用腾讯地图的 **逆地理编码** 接口,将经纬度转换为具体的地址描述(如省市区、街道名等)。这通常需要借助腾讯地图 Webservice API 完成[^2]。 以下是一个基于 HTTP 请求的简单例子: ```javascript const requestReverseGeocoder = (latitude, longitude) => { wx.request({ url: `https://apis.map.qq.com/ws/geocode/v1/?location=${latitude},${longitude}&key=YOUR_API_KEY`, method: 'GET', success(res) { if (res.data.status === 0) { const addressComponent = res.data.result.address_component; console.log(`所在区域:${addressComponent.province} ${addressComponent.city} ${addressComponent.district}`); } else { console.error('请求失败:', res.data.message); } }, fail(err) { console.error('网络错误:', err); } }); }; ``` 注意:上述 URL 中的 `YOUR_API_KEY` 需要替换为你自己的腾讯地图开发者密钥。 #### WXML 页面结构设计 为了提供更好的用户体验,在页面布局方面可参考如下模板。它包含了按钮触发器和地图显示区两部分。 ```html <!-- 绑定点击事件 --> <button bindtap="getLocation">获取我的位置</button> <!-- 地图容器 --> <map id="myMap" markers="{{markers}}" style="width:100%;height:300px;" longitude="{{longitude}}" latitude="{{latitude}}" scale='16'> </map> ``` #### 数据绑定逻辑 最后一步是在 JS 文件里定义好初始状态变量以便于动态更新视图中的地图参数。 ```javascript Page({ data: { latitude: 39.980014, longitude: 116.313972, markers: [] }, getLocation() { wx.getLocation({ type: 'gcj02', success: (res) => { const { latitude, longitude } = res; this.setData({ latitude, longitude }); // 添加标记点 this.addMarker(latitude, longitude); // 反向解析地理位置 this.reverseGeocode(latitude, longitude); } }); }, addMarker(lat, lng){ this.setData({ markers:[{ latitude: lat, longitude: lng, iconPath:"/images/location-icon.png" }] }) }, reverseGeocode(lat,lng){ wx.request({ url:`https://apis.map.qq.com/ws/geocode/v1/?location=${lat},${lng}&key=YOUR_API_KEY`, success:(response)=>{ let result=response.data.result.formatted_addresses.recommend; console.log(result); } }) } }) ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值