2 yingrancyr yingrancyr 于 2014.12.09 11:29 提问

HTML5:用户如选择拒绝共享地理位置,那么下次再次登录进入时就不会再询问

使用html5做了个应用,同时适应APP,微信和wap访问,其中有用到获取地理位置的相关内容,地理位置获取没有什么问题,现在问题是当获取地理位置询问用户时如果选择拒绝共享地理位置,那么下次再次登录进入时就不会再询问,导致如果拒绝了一次以后再也获取不到地理位置,不知道有什么方法可以解决?
获取地理位置代码如下:

 //初始化时调用获取地理位置方法
$(function(){
startgps();
});

//获取地理位置方法
function startgps()
      {
//判断是否支持
        if (navigator.geolocation)
        { 
            navigator.geolocation.watchPosition(showgps,
           // navigator.geolocation.getCurrentPosition(showgps,//成功回调函数
                                 function(error) //失败回调函数
                                 {
                                 alert("获取位置失败,开始执行失败回调函数");
                                 getPositionError(error);
                                  //showgps();
                                      //  showAlert("获取地理位置出错");
                                 },
                                 {enableHighAcuracy: true, timeout:1000,maximumAge: 0}); // 这里设置超时为1000毫秒,即1秒
                }
                else
                {
                    showAlert("navigator.geolocation获取结果为false");
                    //showgps();
                }
            }

      function showgps(position)
      {
        alert("获取位置成功,开始执行成功回调函数");
                if (position)
                {
                    var latitude = position.coords.latitude;
                    var longitude = position.coords.longitude;
document.getElementsByName("lat")[0].value = latitude;
document.getElementsByName("lng")[0].value = longitude;
showAlert("获取到的地理位置为latitude:"+latitude+"---longitude="+longitude);
                }
                else{
                    showAlert("位置获取不到,请确认您打开了定位服务!");
                    var latitude = position.coords.latitude;
                    var longitude = position.coords.longitude;
document.getElementsByName("lat")[0].value = latitude;
document.getElementsByName("lng")[0].value = longitude;
showAlert("定位服务没有打开时获取到的地理位置latitude:"+latitude+"---longitude="+longitude);
                  }
      }

      function getPositionError(error){    
     switch(error.code){    

        case error.TIMEOUT:    

            alert("连接超时,请重试");    

            break;    

        case error.PERMISSION_DENIED:    

            alert("您拒绝了使用位置共享服务,查询已取消");    

            break;    

        case error.POSITION_UNAVAILABLE:    

            alert("亲爱的火星网友,非常抱歉,我们暂时无法为您所在的星球提供位置服务");    

            break;    

    }    
  }

6个回答

zy353003874
zy353003874   Rxr 2014.12.09 12:21
已采纳

可以考虑把用户不同意的参数重新初始化

joneyonly
joneyonly   2015.09.01 10:53

刚好也碰到这个问题。搜到了这里。留个爪印。

给用户的解决对策是: 清理缓存。 如果是微信,在微信设置里面清理微信存储空间。然后再进来就会有提示,请点“确定”。

“授权同意不同意” 存在缓存什么地方,程序如何进行清理和判断,还没搞清楚。。。。

c920816698
c920816698 这个是可以的,赞一个
2 年多之前 回复
qq_37147226
qq_37147226   2017.05.25 11:20

现在遇到这个问题 大佬们怎么解决的啊。

qq_15231971
qq_15231971 解决了吗? 哥们
7 个月之前 回复
qq_30875099
qq_30875099   2015.08.27 09:32

你好。我想问下把用户不同意的参数重新初始化。这个你是怎么做到的

qq_33496135
qq_33496135   2015.12.24 15:59

**同问,怎么做到的呢*

hong52533
hong52533   2016.04.21 17:42

同问,怎么做到的呢?

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!