navigator.geolocation.getCurrentPosition的“无动作”回调在哪里?

时间:2012-03-23 18:17:16

标签: javascript google-maps-api-3 geolocation

当询问浏览器访问当前位置的权限时,确定用户是忽略浏览器提示还是选择“不立即”选项的最佳方法是什么?

这种情况似乎没有触发超时。

if(navigator.geolocation) {
    navigator.geolocation.getCurrentPosition(function(position) {
        currentLocation = new google.maps.LatLng(position.coords.latitude, position.coords.longitude);
        callback();
    }, function() {
        currentLocation = default_location;
        callback();
    },{timeout: 5000});
}

我现在使用的解决方案是使用currentLocation的默认位置,并在用户回答浏览器提示时触发其中一个回调时刷新页面/视图。

1 个答案:

答案 0 :(得分:3)

根据HTML5 geolocation规范,用户执行操作后,您指定的5秒超时才会开始。

  

请注意,获取用户权限所花费的时间不包括在timeout属性所涵盖的时间段内。超时属性仅适用于位置获取操作。

第二个回调函数应该在用户在浏览器中单击“拒绝”时立即触发,但如果用户忽略提示并让它坐下,则不会触发任何内容。传统的实现方式是假设用户没有地理位置功能,并且不会单击提示,将其更多地用作增强而不是必需的功能。

或者,你可以设计一个页面来帮助指导用户采取行动,通过“点击此处”文本投掷一个黑暗的div屏蔽整个页面。