更博啦,背景:webview+小程序,新增收货地址是h5页面,调的小程序地图。获取到地址后再将值带入网页中。最近写的项目中遇到地图定位弹框拒绝授权后,无法再次调起地图组件,页面显示空白,用户使用体验差。针对这个问题,找到两个原因导致该问题的出发点:

1.手机定位未开启

2.小程序地图弹框未授权

针对以上两个问题的解决思路如下:

一、模拟手机定位未开启状态,小程序地理信息弹框允许授权效果

  1. 关闭手机定位信息功能,进入小程序新增收货页面,选择地址,由于使用了小程序api (wx.getLocation) 。弹出地图定位授权弹框,此刻授权弹框出现,

2.点击授权,此刻小程序位置信息打开。但手机定位未开启,此刻出现弹框显示引导用户去开启

3. 开启手机位置定位后,再次前往小程序新增收货页面,选择地址,此刻地图显示:

二、模拟手机定位未开启,小程序地理信息弹框拒绝授权效果

1.首先关闭手机位置,微信定位无法使用:

2.进入新增收货页面选择详细地址:

3.调起地理信息弹框选择拒绝授权,此刻我添加了一个引导页面,方便客户明白该操作意图,其次,通过手动调起小程序

设置的位置信息开关。防止有些用户不知道小程序拒绝授权后,用户信息以及位置信息设置在哪设置(小程序右上角三点,选择关于某某小程序名称,选择右上角三点,选择设置,才能看到用户信息以及位置信息开关选项。巴拉巴拉一堆,其实可以通过该引导页触发一个button事件去调起该页面即可,哈哈哈~~)

3.1、选择拒绝授权后则跳转到引导页,当客户点击授权地理位置按钮后,则自动调起小程序设置

3.2、通过打开位置信息后,此刻小程序授权信息已成功,此时。需要注意的是,我们的大范围手机未开启定位。

当你打开位置信息后跳转到地图页面会走监听手机开启状态逻辑。,如果没有开启则提示如下:

3.3、得知手机定位未开启后,点击以上确定。会自动跳转到上页面。然后用户离开小程序去手机设置中打开定位,如下:

3.4、当手机定位和小程序定位都开启后,进入新增地址页面,选择详细地址。地图组件被再次调起,如下图:

三、好啦。以上是对小程序地图定位的两种情况总结。下面来贴下实现的代码吧。简单的,相信你一看就懂了。毕竟看小仙女文章的宝宝们都很棒呀!

Page({/*** 页面的初始数据*/data: {mapUrl: '',mapDataStr: '',isAuthorize:true, // 判断当前地图是否授权},/*** 生命周期函数--监听页面加载*/onLoad: function(options) {let that = this;var returnUrlArr = decodeURIComponent(options.returnUrl).split('?');this.setData({mapUrl: returnUrlArr[0],mapDataStr: returnUrlArr[1]})},onReady: function(e) {var that = this;that.mapCtx = wx.createMapContext('myMap');that.getCenterLocation();},/*** 用户拒绝小程序地图授权,* button按钮触发去小程序设置中打开位置信息开关,隐藏按钮*/openSettingCallBack(e){if (e.detail.authSetting['scope.userLocation'] == true){this.setData({isAuthorize: true})this.getCenterLocation();}},/*** 调起地图组件*/getCenterLocation() {let that = this;wx.getLocation({type: 'wgs84', success: function(res) {// 如果打开地图没有选择地址则跳转到原H5页面,否则选择地址后再进行跳转let latitude = res.latitudelet longitude = res.longitudewx.chooseLocation({latitude: latitude,longitude: longitude,scale: 28,success: function(res) {var getUserInfos = wx.getStorageSync('userInfo')var userToken = wx.getStorageSync('userToken')var returnDataStr = that.data.mapDataStr + '&avatarUrl=' + encodeURIComponent(getUserInfos.avatarUrl) + '&nickName=' + getUserInfos.nickName + '&address=' + res.address + '&addNameInfo=' + res.name + '&userToken=' + userToken + '&longitude=' + res.longitude + '&latitude=' + res.latitude;var returnUrl = encodeURI(that.data.mapUrl + "?" + returnDataStr);that.setData({// 携带选择地址res.address返回到H5页面中web_src: returnUrl})},fail: function(res) {wx.navigateBack({delta: 1})}})},fail: function (res) {wx.getSetting({success: (res) => {if (res.authSetting['scope.userLocation'] != true) { //非初始化进入该页面,且未授权,按钮显示that.setData({isAuthorize: false,})}else{wx.showModal({ // 手机定位未开启状态title: '手机定位未开启',content: '请在手机设置中打开定位,我们需要知道您的位置才能提供更好的服务~',showCancel: false,success: function (res) {wx.navigateBack({delta: 1})}})}}})}})},
})

希望本次经验分享能帮助到各位宝宝们,再接再厉~继续进击!如果有问题随时告知,互相学习 >0.0<

小程序地图定位授权取消后再次授权相关推荐

  1. 腾讯地图小程序服务器配置,腾讯地图实现微信小程序地图定位教程

    前言 目前腾讯位置服务提供路线规划.地图选点.地铁图.城市选择器插件四款插件产品,本篇博客主要针对地图选点功能进行实现. 开通腾讯位置服务 2.登录进入小程序后台,选择 "开发 - 开发工具 ...

  2. 微信小程序地图定位开发教程

    前言 目前腾讯位置服务提供路线规划.地图选点.地铁图.城市选择器插件四款插件产品,本篇博客主要针对地图选点功能进行实现. 开通腾讯位置服务 1.进入微信公众平台 2.登录进入小程序后台,选择 &quo ...

  3. 腾讯地图实现微信小程序地图定位教程

    前言 目前腾讯位置服务提供路线规划.地图选点.地铁图.城市选择器插件四款插件产品,本篇博客主要针对地图选点功能进行实现. 开通腾讯位置服务 1.进入微信公众平台 2.登录进入小程序后台,选择 &quo ...

  4. uniapp 小程序地图定位选点功能

    <template></template> <script> import { getAddressCode } from "@/api/address& ...

  5. 微信小程序地图定位GPS转腾讯地图的坐标系

    //svar GPS = {PI: 3.14159265358979324,x_pi: 3.14159265358979324 * 3000.0 / 180.0,delta: function (la ...

  6. 微信小程序获取定位后使用腾讯地图解析到市位置

    微信小程序获取定位解析当前城市位置 咱们就话不多说,这呢是我第一次发布文章,第一次使用,所以使用的也比较简单,也还不是很熟悉,接下来呢就直接上代码吧,希望喜欢的朋友可以关注关注嘿嘿 首先我们需要引入腾 ...

  7. 微信小程序实时定位(腾讯地图)

    微信小程序实时获取地理位置-腾讯地图 微信小程序-获取当前城市位置: 一. 我用的腾讯定位服务 https://lbs.qq.com/ 打开之后点击控制台 2.我们创建自己的密匙key 3.下载微信小 ...

  8. 微信小程序地图获取地点信息(打卡签到功能为例)-2020-7-26

    目录 微信小程序地图获取地点信息(打卡签到功能为例) 效果图 前提步骤 首先需要了解的 代码部分 配置性代码 功能性代码 demo 下载 微信小程序地图获取地点信息(打卡签到功能为例) 解决方案:利用 ...

  9. 微信小程序 微信小程序地图搜索、地图搜索点点击出callout气泡标题说明

    实现效果:根据楼盘名称实现地图定位.周边搜索: 代码: html <view class="mapinfo"><view class="mapbd&qu ...

最新文章

  1. android 使用广播监听网络状态
  2. openssh 7.4 java使用_openssh/openssl升级到7.4和1.0.2j 源码方式
  3. xcode8 matlab,Xcode8 iOS App上传详细流程
  4. 资深项目经理的10条项目管理心得
  5. java冗余_Java使用lombok消除冗余代码的方法步骤
  6. 如何知道远程电脑某一端口是否打开?
  7. php 删除硬链接,为什么要用软链接硬链接
  8. 【牛客 - 330F】Applese 的QQ群(拓扑排序,二分)
  9. 解决df -h卡死问题
  10. 选择Bootstrap的理由
  11. win7充当无线路由器
  12. 论文笔记_S2D.35-2017-IROS_利用CNNs联合预测RGB图像的深度、法线和表面曲率
  13. 简易鼠标模拟器 python
  14. shuttle的DSA2LV板子逆向工程完成,Uboot和linux有源码了
  15. 图灵机和冯洛伊曼体系结构
  16. Latex 中文使用方法和示例——分别基于MiKTeX(CTeX套装)、TeXLive 编译系统测试CJK、ctex 宏包,PDFLaTeX、XeLaTeX编译命令及GBK、UTF-8文件编码的使用
  17. mysql使用结巴语句_MySQL 结巴中文分词插件 SqlJieba
  18. 贪心、动态规划:钢条切割
  19. excel不均匀坐标轴_将Excel图表的纵坐标轴设置成不等间距的2种方法
  20. 微信小程序上传图片裁剪工具image-cropper使用

热门文章

  1. 汽车行业每周新闻纵览与职位需求
  2. 转-CNN模型的压缩与加速算法综述
  3. android+学籍管理,论文基于android的学籍管理系统的设计与实现.doc
  4. PAT乙级题目合集(思路笔记)
  5. mac -- brew下载非常慢(2020最新方法)
  6. 区块链到底能做什么?这506个备案项目告诉你
  7. Service pack
  8. Python实现打印斐波那契数列
  9. 小程序毕业设计 基于微信美食介绍点评小程序毕业设计开题报告功能参考
  10. 2021.1.19课程摘要[上](逻辑教育-王劲胜)