2014-09-29 159 views
1

我對科爾多瓦的地理位置插件有一個奇怪的問題。
完美搭配我的平板電腦(華碩TF201,Android 4.4.2),但它不適用於我的手機(LG L9,Android 4.1.2)和仿真器(Nexus 5,Android 4.4.4)。
它打印什麼都沒有,甚至沒有onErrorGeo功能..
這是代碼:navigator.geolocation.getCurrentPosition與科爾多瓦

var onSuccessGeo = function(position) { 
    $("#geolocalization").html('Latitude: '   + position.coords.latitude   + '<br>' + 
     'Longitude: '   + position.coords.longitude   + '<br>' + 
     'Altitude: '   + position.coords.altitude   + '<br>' + 
     'Accuracy: '   + position.coords.accuracy   + '<br>' + 
     'Altitude Accuracy: ' + position.coords.altitudeAccuracy + '<br>' + 
     'Heading: '   + position.coords.heading   + '<br>' + 
     'Speed: '    + position.coords.speed    + '<br>' + 
     'Timestamp: '   + position.timestamp    + '<br>'); 
}; 
function onErrorGeo(error) { 
    $("#geolocalization").html('code: ' + error.code + '<br>' + 
     'message: ' + error.message + '<br>'); 
} 
function Geolocal(){ 
    navigator.geolocation.getCurrentPosition(onSuccessGeo, onErrorGeo); 
} 

回答

0

代碼看起來正確的我,但只是要確定,你可以嘗試使用類似這樣的

警報消息
function onErrorGeo(error) { 
    alert("error"); 
} 

確保錯誤功能真的不起作用。你也可以在成功功能中做到這一點。

在你的代碼是不工作的情況下,請確保您正在執行

navigator.geolocation.getCurrentPosition(onSuccessGeo, onErrorGeo); 

後PhoneGap的事件deviceready已經啓動。

你可以試試這個:

document.addEventListener("deviceready", onDeviceReady, false); 

function onDeviceReady() 
    navigator.geolocation.getCurrentPosition(onSuccessGeo, onErrorGeo); 
} 

更新:您還應該確保你的應用程序的config.xml中有這個聲明的控件標籤內的某處:

<gap:plugin name="org.apache.cordova.geolocation" /> 
+0

謝謝,但我認爲這是我的手機的問題..再次重新啓動,現在它的工作.. – 2014-10-01 13:03:13

1

所以我也來在這個問題上,但我根據Mozilla的文檔計算出來,其中cordova插件如下:https://developer.mozilla.org/en-US/docs/Web/API/Geolocation

在文檔中你可以提供一個PositionOption作爲第三個參數爲navigator.geolocation.getCurrentPosition。看到這裏的文檔狀態:https://developer.mozilla.org/en-US/docs/Web/API/PositionOptions

所以,如果你改變你的代碼

function onDeviceReady() 
    navigator.geolocation.getCurrentPosition(onSuccessGeo, onErrorGeo, {timeout: 5000}); 
} 

5秒鐘後它會超時錯誤,否則默認的超時是Infinity,因此它將繼續等待代碼被解僱,如果您的位置關閉或者GPS無法獲取正確的位置,這可能永遠不會。

希望這會有所幫助。