Решать проблему:
-
Чтобы получить информацию о пользователе в апплете, используйте
wx.getLocation
API, который необходимо настроить перед использованием этого APIАвторизация пользователя. -
Возможно, что пользователь выключил разрешение на получение местоположения при входе в апплете. Когда пользователь должен получить местоположение, необходимо повторно определить, есть ли у них разрешение. Если нет разрешения, пользователю необходимо напомнить снова для авторизации.
-
wx.getLocation
Позиция пользователя, возвращаемая интерфейсом, находится в форме широты и долготы, и она должна быть微信小程序JavaScript SDK
Возвращатьlatitude
longitude
Информация о широте и долготе анализируется как国家 省份 市 ...
форма.
Настроить авторизацию пользователя
Некоторые интерфейсы в апплете могут быть вызваны только после авторизации и согласия пользователя. картина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
Используемые методыgetSetting
userLocation
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 возвращает информацию