blob: 242919de7724b8b7dbbaaa6476bcaa6b7924ae56 [file] [log] [blame]
var origGeolocation = null;
var newGeolocation = null;
//-------------------------------------------------------------------------
// Location
//-------------------------------------------------------------------------
var watchLocationId = null;
/**
* Start watching location
*/
var watchLocation = function(usePlugin) {
var geo = usePlugin ? newGeolocation : origGeolocation;
if (!geo) {
alert('geolocation object is missing. usePlugin = ' + usePlugin);
return;
}
// Success callback
var success = function(p){
console.log('watch location success');
setLocationDetails(p);
};
// Fail callback
var fail = function(e){
console.log("watchLocation fail callback with error code "+e);
stopLocation(geo);
};
// Get location
watchLocationId = geo.watchPosition(success, fail, {enableHighAccuracy: true});
setLocationStatus("Running");
};
/**
* Stop watching the location
*/
var stopLocation = function(usePlugin) {
var geo = usePlugin ? newGeolocation : origGeolocation;
if (!geo) {
alert('geolocation object is missing. usePlugin = ' + usePlugin);
return;
}
setLocationStatus("Stopped");
if (watchLocationId) {
geo.clearWatch(watchLocationId);
watchLocationId = null;
}
};
/**
* Get current location
*/
var getLocation = function(usePlugin, opts) {
var geo = usePlugin ? newGeolocation : origGeolocation;
if (!geo) {
alert('geolocation object is missing. usePlugin = ' + usePlugin);
return;
}
// Stop location if running
stopLocation(geo);
// Success callback
var success = function(p){
console.log('get location success');
setLocationDetails(p);
setLocationStatus("Done");
};
// Fail callback
var fail = function(e){
console.log("getLocation fail callback with error code "+e.code);
setLocationStatus("Error: "+e.code);
};
setLocationStatus("Retrieving location...");
// Get location
geo.getCurrentPosition(success, fail, opts || {enableHighAccuracy: true}); //, {timeout: 10000});
};
/**
* Set location status
*/
var setLocationStatus = function(status) {
document.getElementById('location_status').innerHTML = status;
};
var setLocationDetails = function(p) {
var date = (new Date(p.timestamp));
document.getElementById('latitude').innerHTML = p.coords.latitude;
document.getElementById('longitude').innerHTML = p.coords.longitude;
document.getElementById('altitude').innerHTML = p.coords.altitude;
document.getElementById('accuracy').innerHTML = p.coords.accuracy;
document.getElementById('heading').innerHTML = p.coords.heading;
document.getElementById('speed').innerHTML = p.coords.speed;
document.getElementById('altitude_accuracy').innerHTML = p.coords.altitudeAccuracy;
document.getElementById('timestamp').innerHTML = date.toDateString() + " " + date.toTimeString();
}
/**
* Function called when page has finished loading.
*/
function init() {
document.addEventListener("deviceready", function() {
newGeolocation = navigator.geolocation;
origGeolocation = cordova.require('cordova/modulemapper').getOriginalSymbol(window, 'navigator.geolocation');
if (!origGeolocation) {
origGeolocation = newGeolocation;
newGeolocation = null;
}
}, false);
}
window.onload = function() {
addListenerToClass('getWebViewLocation', getLocation, [false]);
addListenerToClass('watchWebViewLocation', watchLocation, [false]);
addListenerToClass('stopWebViewLocation', stopLocation, [false]);
addListenerToClass('getWebViewLocation30', getLocation, [false, {maximumAge:30000}]);
addListenerToClass('getLocation', getLocation, [true]);
addListenerToClass('watchLocation', watchLocation, [true]);
addListenerToClass('stopLocation', stopLocation, [true]);
addListenerToClass('getLocation30', getLocation, [true, {maximumAge:30000}]);
addListenerToClass('backBtn', backHome);
init();
}