Javascript地理定位API和缺少的回调
使用Javascript地理位置API时,会以以下方式提示用户: “是否要使用当前位置?” 可能会发生三件事: 1) 用户选择OK 2) 用户选择“不允许” 3) 出现错误或超时 目前似乎缺少可用的API,因为我可以通过回调异步管理(1)和(3),但不能(2): 假设在(2)的情况下,我想执行一些特定的操作:如何检测到这一点?所有情况都可以通过错误回调处理:Javascript地理定位API和缺少的回调,javascript,callback,geolocation,Javascript,Callback,Geolocation,使用Javascript地理位置API时,会以以下方式提示用户: “是否要使用当前位置?” 可能会发生三件事: 1) 用户选择OK 2) 用户选择“不允许” 3) 出现错误或超时 目前似乎缺少可用的API,因为我可以通过回调异步管理(1)和(3),但不能(2): 假设在(2)的情况下,我想执行一些特定的操作:如何检测到这一点?所有情况都可以通过错误回调处理: navigator.geolocation.getCurrentPosition(成功、错误、选项) 参数 错误可选 一个可选的回调函
navigator.geolocation.getCurrentPosition(成功、错误、选项)
参数
可选 一个可选的回调函数,它将错误
对象作为其唯一的输入参数PositionError
位置错误
PositionError
对象是具有以下属性的任意JavaScript对象:
表示错误代码的数字。它可以是(1)权限被拒绝,(2)位置不可用,或(3)超时code
navigator.geolocation.getCurrentPosition(..., function (e) {
switch (e.code) {
case 1 : // permission denied
case 2 : // position unavailable
case 3 : // timeout
}
});
我在osx上运行Firefox 28,如果用户拒绝访问地理位置api,它将不会调用error()回调 一个可能的解决方案是“颠倒”逻辑。
navigator.geolocation.getCurrentPosition(..., function (e) {
switch (e.code) {
case 1 : // permission denied
case 2 : // position unavailable
case 3 : // timeout
}
});
firstDoSomething();
var doSomethingWithPosition = function(pos) { ... };
if (navigator.geolocation) {
navigator.geolocation.getCurrentPosition(doSomethingWithPosition);
}