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 集成多个日历

Cordova:如何将多个 onSuccess 值解析为函数

具有多个 CDVViewController 的 Phonegap/Cordova

多个 dex 文件定义 Lorg/apache/cordova/BuildHelper

Cordova 不适用于 iOS 多个目标

Cordova 多个 navigator.geolocation.getCurrentPosition()?