我正在开发一个需要用户所在位置的网站。我目前正在使用enableHighAccuracy设置调用getCurrentPosition,它使用智能手机的GPS(如果可用)。除非用户在建筑物内部,否则这种方法很有效,这是不太准确的基于WiFi的位置的选择。主要问题是GPS修复可能永远不会发生。
如果确定准确的位置需要太长时间,我应该如何请求准确的(GPS)位置,以便返回不太准确的位置?
请注意,我确实需要GPS位置,如果我能得到它并且不能总是使用WiFi。
答案 0 :(得分:1)
我的理解是enableHighAccuracy已经这样做了。 Geolaction High-Accuracy
用户也可能拒绝此功能,或者设备可能无法提供比未指定标志更准确的结果。
如果不是这种情况,你可以设置一个超时,如果GPS花费太长时间再次调用getCurrentPosition,并在错误回调中将enableHighAccuracy设置为false(使用不同的错误回调来避免循环)。
navigator.geolocation.getCurrentPosition(success_callback, error_callback,{enableHighAccuracy : true, timeout: 50000});
function error_callback(err){
if(err.code==1){
// user said no!
}
if(err.code==2){
// position unavailable
}
if(err.code==3){
// timeout
navigator.geolocation.getCurrentPosition(success_callback, different_error_callback,{enableHighAccuracy : false});
}
}