Решать проблему:
-
Чтобы получить информацию о пользователе в апплете, используйте
wx.getLocationAPI, который необходимо настроить перед использованием этого APIАвторизация пользователя. -
Возможно, что пользователь выключил разрешение на получение местоположения при входе в апплете. Когда пользователь должен получить местоположение, необходимо повторно определить, есть ли у них разрешение. Если нет разрешения, пользователю необходимо напомнить снова для авторизации.
-
wx.getLocationПозиция пользователя, возвращаемая интерфейсом, находится в форме широты и долготы, и она должна быть微信小程序JavaScript SDKВозвращатьlatitudelongitudeИнформация о широте и долготе анализируется как国家 省份 市 ...форма.
Настроить авторизацию пользователя
Некоторые интерфейсы в апплете могут быть вызваны только после авторизации и согласия пользователя. картинаgetUserInfo getLocation chooseAddress chooseInvoiceTitle getWeRunDataЖдать.当我们在小程序中需要使用这些接口的时候,首先都要用户用户授权才能使用, 我们可以使用wx.openSetting
getLocationВ дополнение к необходимости авторизации пользователя, но также необходимо в разработкеapp.jsonнастроитьГеографическое назначение Описание;
так第一步мы должныapp.jsonПервая конфигурация в файле地理位置用途说明
app.json
{
"permission": {
"scope.userLocation": {
"desc": "你的位置信息将用于小程序位置接口的效果展示"
}
}
}
Получить информацию о широте и долготе
第二步использовать при необходимостиgetLocationИнтерфейсxx.jsизonLoadВ этом методе считается, что пользователь был авторизован, когдаgetLocationразрешение.
использовать
wx.getSettingПолучите все авторизованные интерфейсы. Интерфейс вернетauthSetting
success(res) {
console.log(res.authSetting)
// res.authSetting = {
// "scope.userInfo": true,
// "scope.userLocation": true
// }
}
})
Так что мы можемonLoadИспользуемые методыgetSettinguserLocation
onLoad: function() {
// 将当前页面的 this 赋值给 vm, 以区别于下面回调函数中的 this
const vm = this
wx.getSetting({
success(res) {
// 1. scope.userLocation 为真, 代表用户已经授权
if (res.authSetting['scope.userLocation']) {
// 1.1 使用 getlocation 获取用户 经纬度位置
wx.getLocation({
success(res){
// 1.2 获取用户位置成功后,将会返回 latitude, longitude 两个字段,代表用户的经纬度位置
console.log(res)
// 1.3 将获取到的 经纬度传值给 getAddress 解析出 具体的地址
vm.getAddress(res.latitude, res.longitude)
}
})
}else {
// 2. 用户未授权的情况下, 打开授权界面, 引导用户授权.
wx.openSetting({
success(res) {
// 2.1 如果二次授权允许了 userLocation 权限, 就再次执行获取位置的接口
if (res.authSetting["scope.userLocation"]) {
wx.getLocation({
success(res){
// 2.2 获取用户位置成功后,将会返回 latitude, longitude 两个字段,代表用户的经纬度位置
console.log(res)
// 2.3 将获取到的 经纬度传值给 getAddress 解析出 具体的地址
vm.getAddress(res.latitude, res.longitude)
}
})
}
}
})
}
}
})
}
scope.userLocationразрешение.
- Если у вас есть разрешение, позвоните напрямую
wx.getLocationПолучить местоположение пользователя. Передайте полученное положение широты и долготы вgetAddress. существуетgetAddressМетод преобразует положение широты и долготы в фактическое国家 省份 市адрес формата;- Если у вас нет разрешения, используйте
wx.openSettingИнтерфейс открывает интерфейс настройки разрешений от имени пользователя, позволяя пользователю выполнять вторичную авторизацию. Выполнить после успешной авторизацииwx.getLocation-->getAddressМетоды.
Примечание Примечание Примечание:
wx.openSettingИспользование интерфейса изменилось с 1 октября 2018 года, так как он используется непосредственно в коде.wx.openSettingчтобы открыть страницу авторизации больше не доступна, пожалуйста, обратитесь к методу использования новой версииОткройте страницу настройки апплета (wx.openSetting) Настройка интерфейса
Преобразование информации о широте и долготе в国家 省份 市
На втором этапе, после получения информации о широте и долготе, используйтеgetAddressспособ преобразования широты и долготы. В этом методе нужно использоватьМини-программа WeChat SDK для JavaScriptкак инструмент.
В использовании
微信小程序JavaScript SDKкогда нужно сначалаМини-программа WeChat SDK для JavaScriptЗарегистрируйте аккаунт и подайте заявку на одинkey,keyТакже нам нужно поставить этоkeyизWebServiceAPIПроверка
. потом
微信小程序 JavaScriptSDKФайл на текущую страницуxx.jsсередина.
// xx.js
const QQMapWX = require('../../utils/qqmap-wx-jssdk.js')
наконец понялgetAddressметод:
getAddress(latitude, longitude) {
// 生成 QQMapWX 实例
let qqmapsdk = new QQMapWX({
key: 'xxxx-xxxxx-xxxxx-xxxxx-xxxxx-xxxxx-xxxxx'
})
// reverseGeocoder 为 QQMapWX 解析 经纬度的方法
qqmapsdk.reverseGeocoder({
location: {latitude,longitude},
success(res) {
console.log('success', res)
vm.setData({
// ad_info: res.result.ad_info
// city: res.result.ad_info
})
}
})
}
Подробности о возврате reverseGeocoder можно посмотретьreverseGeocoder возвращает информацию