Cordova 多个 navigator.geolocation.getCurrentPosition()?
Posted
技术标签:
【中文标题】Cordova 多个 navigator.geolocation.getCurrentPosition()?【英文标题】:Cordova Multiple navigator.geolocation.getCurrentPosition()? 【发布时间】:2015-07-28 09:17:19 【问题描述】:我有一些 GPS 定位请求通过我嵌入在其他函数中的 html 文件。我面临的问题是,如果位置未打开(或在请求触发后关闭位置),则在打开应用程序时。然后我必须重新启动应用程序才能使位置请求再次工作。
如果它失败了一次,那么即使重新打开位置,之后的每个请求都会出错。
为什么会这样?
var Geo11=;
navigator.geolocation.getCurrentPosition(success11,error11, enableHighAccuracy: true, maximumAge: 5000, timeout: 20000 );
//Get the latitude and the longitude;
function success11(position)
Geo11.lat = position.coords.latitude;
Geo11.lng = position.coords.longitude;
calcRoute(Geo11.lat, Geo11.lng);
function error11(error)
alert('Please check your GPS setting, then reload.');
【问题讨论】:
【参考方案1】:首先,您必须进行适当的错误处理。见sn-p。
function(error)
if(error.code == 0)
// unknown error
else if(error.code == 1)
// permission denied
else if(error.code == 2)
// position unavailable
else if(error.code == 3)
// timeout
console.log(error.message);
,
其次,在错误处理之后,您还必须实现重新加载。
注意:由于 GPS 是从 OFF 状态打开的 GPS 硬件组件正在(重新)启动并且在没有适当的超时和重新加载机制的情况下,它不会按预期工作。
话虽如此。在我看来,在您的用例中,如果您在调用地理定位之前只向用户询问位置许可会更好。有一个很好的例子here 供您参考。
另外,this 的答案值得一读。
【讨论】:
以上是关于Cordova 多个 navigator.geolocation.getCurrentPosition()?的主要内容,如果未能解决你的问题,请参考以下文章
Cordova:如何将多个 onSuccess 值解析为函数
具有多个 CDVViewController 的 Phonegap/Cordova