Используйте wx.getLocation(), чтобы получить местоположение пользователя и преобразовать его в реальный текст описания.

Апплет WeChat

Решать проблему:

  1. Чтобы получить информацию о пользователе в апплете, используйтеwx.getLocationAPI, который необходимо настроить перед использованием этого APIАвторизация пользователя.

  2. Возможно, что пользователь выключил разрешение на получение местоположения при входе в апплете. Когда пользователь должен получить местоположение, необходимо повторно определить, есть ли у них разрешение. Если нет разрешения, пользователю необходимо напомнить снова для авторизации.

  3. 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Используемые методы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разрешение.

  1. Если у вас есть разрешение, позвоните напрямуюwx.getLocationПолучить местоположение пользователя. Передайте полученное положение широты и долготы вgetAddress. существуетgetAddressМетод преобразует положение широты и долготы в фактическое国家 省份 市адрес формата;
  2. Если у вас нет разрешения, используйте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 возвращает информацию