我有以下ondeviceready代码:的PhoneGap ondeviceready和geoPosition.getCurrentPosition不会一起工作
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!");
}
}
编辑 - ADDED
你可以看到我在代码:http://www.classhoppers.com/app/index.html
如果您在Chrome中运行它上面的页面作品。您可以打开网络检查器并查看本地存储更新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
您是否尝试过不嵌套您的功能? (比如,在'getLocation'之外移动'geoSuccess'和'geoError')看起来它可能是一个范围问题 – 2014-11-06 21:43:26
谢谢,我移动了这些函数但没有任何效果。 – 2014-11-06 21:51:23
当这个函数被调用时,我应该得到一个允许位置服务的提示:geoPosition.getCurrentPosition(geoSuccess,geoError,{timeout:7000}); – 2014-11-06 21:51:57