我有以下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