获取地理位置需求,应该说是一个不太常用,但是非常常见的一个功能。

所以今天以小程序为例,一起学习一下,看看都有哪些方面需要注意。

授权地理位置

  • 配置manifest.json
    • manifest.json视图
    • manifest.json源码
  • 授权请求authorize
  • 获取经纬度 getLocation
  • 引入地图,逆向解析
    • 注册账号(免费)
    • 创建新秘钥
      • 开发者秘钥申请
      • key 设置
    • 下载小程序SDK
    • 引入SDK,最终代码

配置manifest.json

在微信小程序配置中,必须勾选位置接口,并且写明描述

manifest.json视图

manifest.json源码

"mp-weixin" : {"appid" : "wx***xxxxx*****","setting" : {"urlCheck" : false,"postcss" : true,"es6" : true,"minified" : true},"usingComponents" : true,"permission" : {"scope.userLocation" : {"desc" : "你的位置信息将用xxxxxxxxxxxx"}}},

授权请求authorize

authorize的作用,便是提前向用户发起授权请求。返回之前的授权结果:成功或者失败。一般搭配uni.getSettinguni.openSetting使用。

关于openSetting具体可以戳这里~
关于authorize具体可以戳这里~

获取经纬度 getLocation

uni.authorize({scope: "scope.userLocation",success: () => {uni.showLoading({title: '定位中...' ,mask:true})uni.getLocation({type: "gcj02", //  wgs84: 返回GPS坐标,gcj02: 返回国测局坐标success: res => {console.log(res,'经纬度')}});},fail: () => {//console.log('请授权获取你的位置,否则部分功能将无法使用!')uni.showModal({//弹出提示框title: '是否打开设置页?',content: '请授权获取你的位置,否则部分功能将无法使用!',success(res) {if (res.confirm) {// 用户点击确定按钮uni.openSetting({// 确认后打开设置页面success(res) {// if(res.authSetting['scope.userLocation']){//  console.log("手动授权成功")// }else{//  console.log("手动授权失败")// }},fail(){console.log("打开设置页面失败")}})} else if (res.cancel) {// 用户点击取消按钮console.log('用户点击取消');}},fail(){console.log("确认取消弹出未弹出")}})},
});

到这里咱们就可以得到地理位置的经纬度,但是如果想获得详细的地理位置,还需要逆向解析一下

引入地图,逆向解析

这里咱们以小程序为例,所以引入腾讯地图。

注册账号(免费)

首先需要注册腾讯地图账号,获得key

创建新秘钥

开发者秘钥申请

key 设置

申请成功后,还需要详细配置一下,点击key列表设置按钮后,这里有4处重点,如图:

1、微信APP ID
2、勾选WebServiceAPI
3、选中 域名白名单可以不在里面填写域名,不然校验失败一直提示无权限。

4、安全域名设置,在小程序管理后台 -> 开发 -> 开发管理 -> 开发设置 -> “服务器域名” 中设置request合法域名,添加https://apis.map.qq.com (这里很重要)

下载小程序SDK

拿到秘钥后,便需要引入腾讯地图SDK,下载地址戳这里~

JavaScriptSDK v1.1
JavaScriptSDK v1.2

或者参考具体文档~

引入SDK,最终代码

addressDetailFn (){const qqmapsdk = new QQMapWX({ key: "Mxxx-xxx-xxxx--地图秘钥" });//提前获得授权结果uni.authorize({scope: "scope.userLocation",//已同意授权success: () => {//开启loading,防止多次触发uni.showLoading({title: '定位中...' ,mask:true})//获得经纬度uni.getLocation({type: "gcj02", //  wgs84: 返回GPS坐标,gcj02: 返回国测局坐标success: res => {const {latitude, longitude} = res;const location = {latitude, longitude};// 传入经纬度,逆向解析qqmapsdk.reverseGeocoder({location,success: (res) =>{//关闭loadinguni.hideLoading();//最终地址let ad_info = res.result.ad_info || {};let address = ad_info.province+'-'+ad_info.city+'-'+ad_info.district;let detailAddress = res.result.formatted_addresses.recommendconsole.log(address,'省市县')console.log(detailAddress,'详细的地址')},fail :(e)=>{uni.hideLoading();}});},fail :(e)=>{//这里也很重要,有可能用户关闭了GPS,虽然可以定位,但是没有位置信息uni.hideLoading();uni.showModal({content:'位置定位失败,请检查您的GPS是否开启',showCancel:false,confirmText:'知道了'})console.log(e,'获取经纬度')}});},// 拒绝了授权fail: () => {uni.showModal({//弹出提示框title: '是否打开设置页?',content: '请授权获取你的位置,否则部分功能将无法使用!',success(res) {if (res.confirm) {// 用户点击确定按钮uni.openSetting({// 确认后打开设置页面success(res) {// if(res.authSetting['scope.userLocation']){//  console.log("手动授权成功")// }else{//  console.log("手动授权失败")// }},fail(){console.log("打开设置页面失败")}})} else if (res.cancel) {// 用户点击取消按钮console.log('用户点击取消');}},fail(){console.log("确认取消弹出未弹出")}})},});}

这样便能拿到详细的地理位置了,大家可能对于我拼接的最终具体地址有疑惑,这里可以根据需求自行拼接,具体参数值,戳这里~

微信小程序 -- 授权地理位置相关推荐

  1. 微信小程序 授权地理位置被拒绝后 wx.getLocation接口调用失败问题

    最近在开发小程序,需要用到位置信息. 但总有那么一小部分人会点击拒接授权,然后小程序就用不了了.因为是根据所在的城市信息来加载数据,所以就需要引导用户自己打开地理位置授权.像下图 废话不多说直接上代码 ...

  2. 微信小程序获取地理位置,用户未开启手机定位时的解决方案

    要点:获取地理位置时,如果获取地理位置失败,有两种情况: 1.用户未给小程序授权地理位置信息 2.系统设置中-隐私选项地理位置未开启或系统未给微信授权地理位置信息 在获取地理位置信息失败后,判断用户是 ...

  3. 微信小程序获取地理位置失败原因及解决方案

    微信小程序获取用户地理位置失败的原因主要有3种情况: 1. 手机系统设置中地理位置未开启 2. 系统未给微信app授权 3. 用户未给小程序授权地理位置信息 所以需要继续完善下定位失败的处理逻辑. 1 ...

  4. 微信小程序授权登录 组件的封装

    微信小程序授权登录 组件的封装 新建components文件 写wxml文件 wxss部分 js部分 json引用 页面使用 页面js 授权登录 流程如下: 因为多个页面功能需要登录状态 所以做了个组 ...

  5. 微信小程序---授权保存图片或视频,拒绝后不在出现弹窗---自定义组件弹窗

    微信小程序授权保存图片后拒绝授权,(当拒绝授权后,微信再次调用保存不在出现授权弹窗): 这么一来,微信提供给开发者的解决方法就是跳入设置页面里面让用户自己打开权限. 那么今天自己自定义了一个组件. 根 ...

  6. SpringBoot微信小程序授权登录

    SpringBoot微信小程序授权登录 一.appId 1.1.自己是管理者:微信公众平台,申请或登录自己的微信小程序,在开发者管理中即可看到 2.2.自己是开发者:让管理员将自己加入到小程序开发者管 ...

  7. uniapp微信小程序授权登录和获取微信绑定的手机号码

    uniapp微信小程序授权登录和获取微信绑定的手机号码 弹出授权的弹框 <view class="weixinOk" @tap="getUserProfile&qu ...

  8. 微信小程序授权登录取消授权重新授权处理方法 附可用代码

    微信小程序授权登录基本是小程序的标配了,但是官方的demo,取消授权后,就不能再重新点击登录,除非重新加载小程序才可以,这下怎么办? 我们可以先在首页引导用户点击,然后跳转到一个新的页面,在新的页面进 ...

  9. 圆头像 微信小程序 绘图_[微信小程序]授权头像修改圆形

    "#[一如分算需上来处一定迹面数一跳这件我子作微信小程序]授权头新直能分支调二浏页器朋代说,事刚需求像修改圆形" 一. .wxml .wxss .userinfo-avatar { ...

  10. 新版微信小程序授权登录流程及问题汇总(getUserProfile)

    问题来源:前不久去面试的时候有面试官问我你有自己的博客啥的吗?只能很尴尬的说没有.其实一直想有一个属于自己的博客啥的去记录自己在开发过程中遇到的问题,正好现在微信小程序比较流行,就花了两天自己搞了一个 ...

最新文章

  1. A fresh look at the genomes enabled by highly accurate long read SMRT sequencing from PacBio
  2. PHP扩展 Mongo 与 MongoDB
  3. Android图像变化
  4. leafLet API 中文文档翻译
  5. 一步步学习如何安装并使用SAP HANA Express Edition
  6. ssh报错解决 ECDSA host key for 123.56.11.181 has changed and you have requested strict checking.
  7. 2018蓝桥杯A组:方格计数(3种方法)
  8. 冒泡排序详解(Java实现)
  9. lamp一键配置 --转自秋水
  10. 用NI的数据采集卡实现简单电子测试之2——绘制三极管输出特性曲线(面)图...
  11. 计算机校本培训措施,2017度信息技术校本培训计划
  12. SSD: Single Shot MultiBox Detector 模型fine-tune和网络架构
  13. Kanzi Shader入门
  14. 提交代码时用prettier自动格式化
  15. 在word中插入显示在同一行的两张图片(且各自带有题注)
  16. 欧洲首台超导相干量子退火机开建,欲彻底改变当前量子计算格局
  17. 凝思linux系统显卡设置,TaiShan服务器安装凝思操作系统Linx6.0.90并设置独立显卡WX2100屏幕显示输出...
  18. C语言入门常写的三个代码
  19. 3d卷积神经网络应用,3d可视动态神经检测
  20. 现货白银分析并不能解决所有问题

热门文章

  1. 15个经典面试问题及回答思路,经典好文
  2. 电脑cd,CD光盘如何翻录在电脑上 将CD复制到电脑上步骤的方法有哪些
  3. 民科微服务电脑版下载_民科微服务电子注册护士个人端下载-民科微服务医师电子注册app最新版 v2.4_爱下手机站...
  4. Android开发前景及现状分析,高级android工程师
  5. 同相加法器电路图_反相加法器电路图_运放加法器电路图解析
  6. 快门光圈感光度口诀_曝光补偿怎么调,快门光圈感光度口诀,深度解析曝光补偿...
  7. 企业网站建设常用CMS建站系统推荐
  8. java contains 大小写_使用.contains方法忽略大小写的选项?
  9. linux系统下使用uTorrent下载ipv6资源
  10. android写日记app,写日记的app哪个好用 写日记的软件有哪些