yingrancyr 2014-12-09 03:29 采纳率: 33.3%
浏览 7249
已采纳

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条回答 默认 最新

  • zy_think123 2014-12-09 04:21
    关注

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

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(5条)

报告相同问题?

悬赏问题

  • ¥20 usb设备兼容性问题
  • ¥15 错误(10048): “调用exui内部功能”库命令的参数“参数4”不能接受空数据。怎么解决啊
  • ¥15 安装svn网络有问题怎么办
  • ¥15 Python爬取指定微博话题下的内容,保存为txt
  • ¥15 vue2登录调用后端接口如何实现
  • ¥65 永磁型步进电机PID算法
  • ¥15 sqlite 附加(attach database)加密数据库时,返回26是什么原因呢?
  • ¥88 找成都本地经验丰富懂小程序开发的技术大咖
  • ¥15 如何处理复杂数据表格的除法运算
  • ¥15 如何用stc8h1k08的片子做485数据透传的功能?(关键词-串口)