美文网首页
百度地图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