的Javascript地理位置API和缺乏回调
问题描述:
使用JavaScript地理位置API,用户以这种方式被提示:“你想用你的当前位置”的Javascript地理位置API和缺乏回调
三件事情可能会发生:
1)用户选择确定 2)用户选择“不允许” 3)有错误或超时
可用的API似乎是目前所缺乏的,因为我可以管理(1)和(3)asyncronously有回调,但不(2):
navigator.geolocation.getCurrentPosition(
function(position) {
alert("You pressed OK");
},
function(error) {
alert("There is an error");
}
);
假设在(2)我想要做一些具体的操作情况:怎么能我发现了这个?
答
所有病例可以通过错误回调处理:
navigator.geolocation.getCurrentPosition(success, error, options)
参数
...
error
可选一种可选的回调函数,接受一个对象
PositionError
作为其唯一的输入参数。...
PositionError
甲
PositionError
对象是任意的JavaScript对象具有以下属性:...
code
表示错误代码的数字。它可以是(1)被拒绝的权限,(2)位置不可用或(3)超时。
...
https://developer.mozilla.org/en-US/docs/Web/API/window.navigator.geolocation.getCurrentPosition
例子:
navigator.geolocation.getCurrentPosition(..., function (e) {
switch (e.code) {
case 1 : // permission denied
case 2 : // position unavailable
case 3 : // timeout
}
});
答
我在OSX上运行Firefox 28,它不会调用错误()如果回调用户拒绝访问地理位置api。
一种可能的解决方案是“反向”逻辑。
firstDoSomething();
var doSomethingWithPosition = function(pos) { ... };
if (navigator.geolocation) {
navigator.geolocation.getCurrentPosition(doSomethingWithPosition);
}