强制GeoLocation允许

时间:2016-03-14 02:20:24

标签: javascript html5 geolocation

我目前正在尝试为员工构建一个应用程序,以便每天上班和下班。

我目前已设置地理定位以自动获取用户的位置并将其存储在数据库中,但是出于显而易见的原因,如果用户按下拒绝,则无法获取该位置。

有没有办法可以强制我的页面启用位置,或者在禁用位置时阻止加载页面。

我已设法使用某个功能进行设置,但如果用户按下不是现在按钮或稍后选择该页面仍然正确呈现并且不会阻止员工使用该系统。

我需要做的是以下内容:

  • 强制位置服务处于开启状态或阻止页面在关闭时进行渲染
  • 如果之前已拒绝使用,请在页面加载时打开允许/拒绝位置服务框。

非常感谢任何帮助。

3 个答案:

答案 0 :(得分:4)

我不知道您是如何生成页面的,但如果您可以依赖Javascript进行渲染,或者如果拒绝重定向到错误页面,则可以使用依赖事实上,如果拒绝,您将收到错误回调:

navigator.geolocation.getCurrentPosition(success[, error[, options]])

所以你的网站可以:

  • 仅在调用success处理程序时进行渲染,如果没有,则显示错误(超时后)
  • 如果调用错误处理程序,则重定向到错误页面

现在,对于你的明确否认",我怀疑这是可能的。我建议的最好的是你有关于清除错误页面上的地理位置设置的说明。不幸的是,这些将取决于操作系统和浏览器。

答案 1 :(得分:1)

一旦用户拒绝,你就无法获得lat / lng。这是由浏览器强制执行的。另一种选择是将用户的IP地址作为回退以将其映射到物理地址。但要注意,当用户连接到wifi时,这种方法效果更好。 3G / 4G的准确性是邮政编码级别。

答案 2 :(得分:0)

地理位置的格式是

navigator.geolocation.getCurrentPosition(success, error, options)

您可以通过以下方式检查用户是否阻止了位置提示

navigator.geolocation.getCurrentPosition(
    function(position) {
        // Success goes here
    }.bind(this),
    function(error) {
        toastr.error("Please turn on location for this feature")
        setTimeout(function() {
            window.location.href = '/'
        }, 2000)
    }, [your options]
)