计算地图两点之间距离
微信小程序启用位置功能需要现在app.json启用地理位置功能
"permission": {
"scope.userLocation": {
"desc": "你的位置信息将用于小程序位置接口的效果展示"
}
}
上架需要注意
暂只针对国内主体如下类目的小程序开放,需要先通过类目审核,再在小程序管理后台,「开发」-「开发管理」-「接口设置」中自助开通该接口权限。 接口权限申请入口将于2022年3月11日开始内测,于3月31日全量上线。并从4月18日开始,在代码审核环节将检测该接口是否已完成开通,如未开通,将在代码提审环节进行拦截。
获取当前地理位置信息
onShow: function () {
var that = this
wx.getLocation({
type: 'wgs84',
success(res) {
const latitude = res.latitude //维度
const longitude = res.longitude //经度
var lat2 = 34.224167 // 这个是目的地经纬度
var lng2 = 108.941944 // 这个是目的地经纬度
let space = that.space(latitude, longitude, lat2, lng2)
console.log('我跟小寨之间的距离是:', space, '千米')
}
})
接口调用入参
成功回调函数
计算位置的方法 返回数据为千米
/**
* caculate the great circle distance
* @param {Object} lat1 维度1
* @param {Object} lng1 经度1
* @param {Object} lat2 维度2
* @param {Object} lng2 经度2
*/
space(lat1, lng1, lat2, lng2) {
console.log(lat1, lng1, lat2, lng2)
var radLat1 = lat1 * Math.PI / 180.0;
var radLat2 = lat2 * Math.PI / 180.0;
var a = radLat1 - radLat2;
var b = lng1 * Math.PI / 180.0 - lng2 * Math.PI / 180.0;
var s = 2 * Math.asin(Math.sqrt(Math.pow(Math.sin(a / 2), 2) +
Math.cos(radLat1) * Math.cos(radLat2) * Math.pow(Math.sin(b / 2), 2)));
s = s * 6378.137;
s = Math.round(s * 10000) / 10000;
return s // 单位千米
},