小程序如何获取用户当前位置
在很多小程序中,需要获取用户当前位置信息,比如地图应用、打车应用等等。本文将介绍如何在小程序中获取用户当前位置信息。
1. 获取用户授权
在获取用户当前位置信息时,需要先让用户同意授权,否则无法获取。调用小程序中的 wx.authorize 方法即可弹出授权窗口。
1.1 调用 wx.authorize 方法
wx.authorize({
scope: 'scope.userLocation',
success () {
console.log('用户已同意授权')
},
fail () {
console.log('用户未同意授权')
}
})
这里我们传入的 scope 参数为 scope.userLocation,即请求获取用户地理位置信息的授权。
1.2 用户已同意授权
如果用户同意授权,我们可以调用小程序中的 wx.getLocation 方法获取用户当前位置信息。
2. 获取用户当前位置信息
调用 wx.getLocation 方法可以获取用户当前位置信息。
2.1 调用 wx.getLocation 方法
wx.getLocation({
type: 'gcj02',
success (res) {
console.log('用户当前位置信息:', res)
},
fail () {
console.log('获取用户位置信息失败')
}
})
这里的参数 type 为坐标类型,支持 gcj02(国测局坐标)和 wgs84(GPS 坐标)。如果没有设置 type,默认为 gcj02。
2.2 获取用户当前位置信息成功
成功获取用户位置信息后,返回的结果如下:
{
latitude: 22.54286, // 纬度
longitude: 114.05956, // 经度
speed: -1, // 速度,单位 m/s,始终为 -1
accuracy: 5, // 位置精度
altitude: 32.5, // 高度,单位 m,Apple 要求小程序在获取高度时必须提示用户授权
verticalAccuracy: 2.3, // 垂直精度,单位 m(Android 无法获取,返回 0)
horizontalAccuracy: 5 // 水平精度,单位 m
}
3. 实时获取用户当前位置信息
实时获取用户当前位置信息可以调用小程序中的 wx.startLocationUpdate,该方法可监听用户实时位置变化,以及获取用户当前的海拔高度等信息。
3.1 调用 wx.startLocationUpdate
wx.startLocationUpdate({
success () {
console.log('开始监听位置变化')
},
fail () {
console.log('监听位置变化失败')
}
})
3.2 获取用户当前位置信息
监听到用户位置变化后,可以调用 wx.onLocationChange 获取用户当前位置信息。
wx.onLocationChange(function(res) {
console.log('用户当前位置信息:', res)
})
3.3 获取用户当前高度信息
wx.startLocationUpdate({
altitude: true,
success () {
console.log('获取用户当前高度信息成功')
},
fail () {
console.log('获取用户当前高度信息失败')
}
})
同样的,如果要获取用户海拔高度信息,需要在调用 wx.startLocationUpdate 时设置 altitude 参数为 true,并在 success 回调函数中获取。
4. 总结
本文介绍了如何在小程序中获取用户当前位置信息,需要先让用户同意授权,然后调用 wx.getLocation 方法即可获取用户当前位置信息,使用 wx.startLocationUpdate 方法可以实时获取用户位置信息和高度信息。开发者需要根据具体业务需求来使用获取到的位置信息。