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条)

报告相同问题?

悬赏问题

  • ¥15 YoloV5 第三方库的版本对照问题
  • ¥15 请完成下列相关问题!
  • ¥15 drone 推送镜像时候 purge: true 推送完毕后没有删除对应的镜像,手动拷贝到服务器执行结果正确在样才能让指令自动执行成功删除对应镜像,如何解决?
  • ¥15 求daily translation(DT)偏差订正方法的代码
  • ¥15 js调用html页面需要隐藏某个按钮
  • ¥15 ads仿真结果在圆图上是怎么读数的
  • ¥20 Cotex M3的调试和程序执行方式是什么样的?
  • ¥20 java项目连接sqlserver时报ssl相关错误
  • ¥15 一道python难题3
  • ¥15 牛顿斯科特系数表表示