前言
本教程是基于 “apifm-wxapi” 模块,教你快速实现小程序开发,所以你可能需要先了解以下知识点:
《创建 HelloWorld 项目》
《使用 “apifm-wxapi” 快速开发小程序》
功能说明
- 知道坐标,可以查询该坐标的地址
 - 给定两个坐标,可以计算两点之间的距离(公里 / km)
 
特别说明
本案例中,使用到了微信小程序的2个官方接口:
wx.getLocation()wx.chooseLocation()
为了保护用户隐私,微信有规定,必须要告诉用户使用定位的业务用途,以便帮助用户决策是否要允许小程序读取 TA 的定位信息:
https://developers.weixin.qq.com/miniprogram/dev/reference/configuration/app.html#permission
所以,根据微信小程序官方的说明,本案例在 app.json 文件中加入了使用场景说明:
"permission": {"scope.userLocation": {"desc": "微信规定必须要说明定位用途"}}
wxml代码
<button type="primary" bindtap="queryAddress"> 读取当前地址坐标并查询地址 </button><button type="warn" bindtap="selAddress"> 选地址计算距离 </button>
js代码
const WXAPI = require('apifm-wxapi')Page({data: {latitude: undefined,longitude: undefined},onLoad: function (options) {},onShow: function () {},queryAddress(){ // 读取当前定位坐标const _this = thiswx.getLocation({type: 'wgs84',success(res) {console.log(res)_this.setData(res)_this.mapQQAddress(res)}})},mapQQAddress(e){ // 坐标查地址const location = e.latitude + ',' + e.longitudeWXAPI.mapQQAddress(location, 1).then(res => {console.log('地址查看:', res)if (res.code == 0) {wx.showModal({title: '成功',content: res.data.result.address,showCancel: false})}})},selAddress(){ // 选择一个地址,读取坐标后计算距离const _this = thisif (!this.data.latitude || !this.data.longitude) {wx.showToast({title: '请先读取当前地址',icon: 'none'})return}wx.chooseLocation({success: (e) => {console.log(e)WXAPI.mapDistance(_this.data.latitude, _this.data.longitude, e.latitude, e.longitude).then(res => {console.log(res)if (res.code == 0) {wx.showModal({title: '成功',content: '距离:' + res.data + '公里',showCancel: false})}})}})}})
总结
本案例主要使用了 apifm-wxapi 的以下方法:
WXAPI.mapDistance(lat1, lng1, lat2, lng2)WXAPI.mapQQAddress(location, coord_type)
coord_type 参数: 1 GPS坐标 2 sogou经纬度 3 baidu经纬度 4 mapbar经纬度 5 [默认]腾讯、google、高德坐标 6 sogou墨卡托
关于 apifm-wxapi 更多的使用方法:
本案例Demo代码下载:
期待你的进步!
感谢!
