美文网首页
百度地图API geolocation三次不允许定位后再次弹出用

百度地图API geolocation三次不允许定位后再次弹出用

作者: 张Piers | 来源:发表于2019-06-13 19:27 被阅读0次

问题描述

  • 手机端h5页面调用百度地图获取地理位置的API,iOS手机上效果会提示是否允许百度地图访问开启定位服务,如果点击不允许,退出后 ,重复操作三次,即使重新到iPhone的设置里开启允许应用获取定位,进入页面仍然无法获取定位。

原因分析

  • 第一反应是’不允许‘这个被浏览器记录,但是由于h5是应用在企业微信中,在iPhone设置中开启了企业微信允许授权定位,但是仍然不起作用,重新启动企业微信也不起作用,调用geolocation也会报错(accuracy为null)
let geolocation = new BMap.Geolocation();
geolocation.getCurrentPosition(
    function(r) {
    //关于状态码
    //BMAP_STATUS_SUCCESS    检索成功。对应数值“0”。
    //BMAP_STATUS_CITY_LIST    城市列表。对应数值“1”。
    //BMAP_STATUS_UNKNOWN_LOCATION    位置结果未知。对应数值“2”。
    //BMAP_STATUS_UNKNOWN_ROUTE    导航结果未知。对应数值“3”。
    //BMAP_STATUS_INVALID_KEY    非法密钥。对应数值“4”。
    //BMAP_STATUS_INVALID_REQUEST    非法请求。对应数值“5”。
    //BMAP_STATUS_PERMISSION_DENIED    没有权限。对应数值“6”。(自 1.1 新增)
    //BMAP_STATUS_SERVICE_UNAVAILABLE    服务不可用。对应数值“7”。(自 1.1 新增)
    //BMAP_STATUS_TIMEOUT    超时。对应数值“8”。(自 1.1 新增)
    if (this.getStatus() === BMAP_STATUS_SUCCESS) {
        //精度为undefined 代表用户拒绝授权地理位置
        if (r.accuracy === null) {
            console.log('用户不允许定位')
        }else{
            console.log('用户允许')
        }
    }
);
  • 查阅资料后发现,三次不允许后,iOS系统默认不让该应用程序获取定位,所以不论你在设置里开启都没有用。并且,没有重启这个提示弹窗都API

解决方法

  • 将系统设置里都定位设置重制
    1、(设置)Settings -> (通用)Genera -> (重置) Reset-> (重置定位于隐私)Reset Location & Privacy.
    2、(设置)Settings ->( 隐私)Privacy 开启 Location Services.

MORE

  • 如果是将h5页面嵌在app中,可以用js与app进行交互的方式获取定位,在原生app获取定位后传入给h5,这样当整个app的定位权限被用户拒绝与开启的时候,直接到设置中对应的app下就可以恢复了

相关文章

网友评论

      本文标题:百度地图API geolocation三次不允许定位后再次弹出用

      本文链接:https://www.haomeiwen.com/subject/ogcefctx.html