zoukankan      html  css  js  c++  java
  • 微信小程序获取地理位置

    小程序只支持获取当前位置的经纬度,并不能直接获取到地理名称,需要通过第三方来逆地址解析,这里我选择的是腾讯位置服务

    在使用前需要去申请key,这里是地址:https://lbs.qq.com/console/mykey.html?console=mykey
    下面上栗子:

    <view class="hotcity-common thisCity">当前选择城市</view>
      <view class="thisCityName">{{city}}</view>
    
    var QQMapWX = require('../../utils/qqmap-wx-jssdk.js');
    var qqmapsdk;
    page({
        data: {
        city: "",
        latitude: '',
        longitude: '',
        }
        
    onLoad: function() {
        qqmapsdk = new QQMapWX({
          key: 'FD2BZ-R34KJ-4P4FW-KAW2S-ZASLV-GCFBR' //自己的key秘钥 
        });
        this.getUserLocation();
      },
     
    getUserLocation: function() {
        let vm = this;
        wx.getSetting({
          success: (res) => {
            console.log("设置信息"+JSON.stringify(res))
            if (res.authSetting['scope.userLocation'] != undefined && res.authSetting['scope.userLocation'] != true) {
              wx.showModal({
                title: '请求授权当前位置',
                content: '需要获取您的地理位置,请确认授权',
                success: function(res) {
                  if (res.cancel) {
                    wx.showToast({
                      title: '拒绝授权',
                      icon: 'none',
                      duration: 1000
                    })
                  } else if (res.confirm) {
                    wx.openSetting({
                      success: function(dataAu) {
                        if (dataAu.authSetting["scope.userLocation"] == true) {
                          wx.showToast({
                            title: '授权成功',
                            icon: 'success',
                            duration: 1000
                          })
                          //再次授权,调用wx.getLocation的API
                          vm.getLocation();
                        } else {
                          wx.showToast({
                            title: '授权失败',
                            icon: 'none',
                            duration: 1000
                          })
                        }
                      }
                    })
                  }
                }
              })
            } else if (res.authSetting['scope.userLocation'] == undefined) {
              //调用wx.getLocation的API
              vm.getLocation();
            } else {
              //调用wx.getLocation的API
              vm.getLocation();
            }
          }
        })
      },
     
      // 微信获得经纬度
      getLocation: function() {
        let vm = this;
        wx.getLocation({
          type: 'wgs84',
          success: function(res) {
            console.log(JSON.stringify(res))
            var latitude = res.latitude
            var longitude = res.longitude
            var speed = res.speed
            var accuracy = res.accuracy;
            vm.getLocal(latitude, longitude)
          },
          fail: function(res) {
            console.log('fail' + JSON.stringify(res))
          }
        })
      },
      // 获取当前地理位置
      getLocal: function(latitude, longitude) {
        let vm = this;
        qqmapsdk.reverseGeocoder({
          location: {
            latitude: latitude,
            longitude: longitude
          },
          success: function(res) {
            let province = res.result.ad_info.province
            let city = res.result.ad_info.city
            vm.setData({
              province: province,
              city: city,
              latitude: latitude,
              longitude: longitude
            })
     
          }
        });
      },
     
    })
    

    以上就是小程序获取地理位置的全部方法

  • 相关阅读:
    C++笔记
    mongodb文件损坏的恢复--无可恢复数据
    wiredtiger--初学数据恢复
    mongodb异常恢复
    守护进程,互斥锁, IPC ,Queue队列,生产消费着模型
    进程,多进程,进程与程序的区别,程序运行的三种状态,multiprocessing模块中的Process功能,和join函数,和其他属性,僵尸与孤儿进程
    socket之UDP协议,并发编程介绍,操作系统发展史
    半连接数,粘包问题,自定义报头
    socket模块
    网络编程介绍,C/S 架构,网络通讯协议,osi七层
  • 原文地址:https://www.cnblogs.com/zouwangblog/p/11141358.html
Copyright © 2011-2022 走看看