我正在使用Phonegap的移動應用程序,它將使用地理位置。之前我使用了Geolocation,但是這次我認爲爲它創建一個新的對象包裝會更好,因爲大部分功能都是基於這個功能的,並且不希望以混亂的代碼結束。Javascript Objects/Geolocation API
解決方案可能是直截了當的,但它擊敗了我,因爲我從來沒有在JS中使用對象做過任何非常先進的事情。下面是目前的代碼(刪除不需要的部分):
function Geolocation(maximumAge, accurate) {
this.settings = {
'maximumAge': maximumAge,
'accurate': accurate
}
}
Geolocation.prototype = {
position: {
latitude: null,
longitude: null,
altitude: null,
accuracy: null,
altitudeAccuracy: null,
heading: null,
speed: null
},
lastCheck: null,
watchId: null,
onSuccess: function(position) {
this.position.latitude = position.coords.latitude;
this.position.longitude = position.coords.longitude;
this.position.altitude = position.coords.altitude;
this.position.accuracy = position.coords.accuracy;
this.position.altitudeAccuracy = position.coords.altitudeAccuracy;
this.position.heading = position.coords.heading;
this.position.speed = position.coords.speed;
this.lastCheck = new Date(position.timestamp);
},
onError: function(error) {
console.log(error.code+' '+error.message);
},
getCoordinates: function() {
if (this.watchId == null) {
this.watchId = navigator.geolocation.watchPosition(this.onSuccess, this.onError, { maximumAge: this.settings.maximumAge, enableHighAccuracy: this.settings.accurate});
}
return {
latitude: this.position.latitude,
longitude: this.position.longitude
};
}
};
正如你也許已經注意到,當我打電話getCoordinates(),回調成功的功能是(我猜)出對象的範圍,因此不知道「這個」是什麼......任何想法如何解決這個問題或者什麼是正確的實現?
謝謝你的時間!
後來編輯:我知道我需要修改該函數,只有在找到位置後才返回座標。目前還不知道如何做到這一點,但如果您有任何提示,那將非常棒!