PhoneGap ondeviceready和geoPosition.getCurrentPosition不能一起使用

时间:2014-11-06 21:16:12

标签: cordova

我有以下ondeviceready代码:

document.addEventListener("deviceready", onDeviceReady, false);
            function onDeviceReady() {
                getLocation();  
            }

如果我只是调用getLocation();没有事件监听器它可以正常工作(除了双位置服务提示)。

但是,如果我调用getLocation();在上面的代码中它失败了。特别是这个函数永远不会返回任何东西和时间:geoPosition.getCurrentPosition(geoSuccess,geoError,{timeout:7000});

代码在'ondeviceready'之外工作的原因是什么,但是当我在上面的代码中调用它时失败了?

思想?

这是我的getLocation函数:

enter code here

function getLocation(){

        var latitude = localStorage.getItem('Lat');
        var longitude = localStorage.getItem('Long');

        if (geoPosition.init()) {
            geoPosition.getCurrentPosition(geoSuccess, geoError, {timeout:7000});
        }

        function geoSuccess(p) {
            console.log("Found you at latitude " + p.coords.latitude + ", longitude " + p.coords.longitude);
        }

        function geoError() {
            console.log("Could not find you!");
        }
    }

已编辑 - 已添加<​​/ p>

您可以在以下位置查看我的代码:http://www.classhoppers.com/app/index.html

如果您在Chrome中运行上面的页面,则可以使用。您可以打开Web检查器并查看本地存储更新Lat / Long

如果您模拟iPhone5,您将看到Lat / Long永远不会更新。

以下是我发现的内容:

调用我的函数:getLocation();独自工作

在OnDeviceReady中调用它不起作用

首先,我检查它是否是移动浏览器然后运行onDeviceReady。

if(SmartPhone.isAny() == true){ 
document.addEventListener("deviceready", onDeviceReady, false);
function onDeviceReady() {
getLocation();  
}
}
else {
console.log('browser');
getLocation();
}

以下是我的getLocation()函数的链接:http://www.classhoppers.com/app/js/geoLocation.js

1 个答案:

答案 0 :(得分:0)

尝试在index.html文档的头部手动插入cordova.js的脚本标记。我怀疑你错过了这个剧本。

 <script type="text/javascript" charset="utf-8" src="cordova.js"></script>