/** * Geolocation API (HTML5 Feature) * Pending to final SPEC, now it's a Phonegap Wrapper * http://www.w3.org/TR/geolocation-API/ * * @namespace LUNGO.Device * @class Gps * * @author Javier Jimenez Villar || @soyjavi */ LUNGO.Device.Gps = (function(lng, undefined) { var _position = null; var _watcher = null; var CALLBACK = { success: null, error: null }; var GPS_OPTIONS = { enableHighAccuracy: false, timeout: 10000, maximumAge: 60000 }; /** * @ToDo * * @method get * * @param {Function} Callback */ var get = function(callbacks, options) { if (_isReady()) { _bindCallbacks(callbacks); navigator.geolocation.getCurrentPosition(_success, _error, options); } }; /** * @ToDo * * @method get * * @param {Function} @ToDo * @param {object} @ToDo */ var watch = function(callbacks, options) { if (_isReady()) { _bindCallbacks(callbacks); _watcher = navigator.geolocation.watchPosition(_success, _error, options); } }; /** * @ToDo * * @method position * */ var position = function() { return _position; }; /** * @ToDo * * @method clear */ var stop = function() { _clearPosition(); }; /** * Console system to display messages when you are in debug mode. * * @method log * * @param {number} Severity based in (1)Log, (2)Warn, (>2)Error * @param {string} Message to show in console */ var address = function(latitude, longitude, callback) { // @ToDo: Check Social Analytics RESTful }; var _isReady = function() { if (navigator.geolocation) { _clearPosition(); return true; } else { lng.core.log(3, 'Lungo.Device.Gps [ERROR]: navigator.geolocation is innacesible.') return false; } }; var _clearPosition = function() { _position = null; if (_watcher) { navigator.geolocation.clearWatch(_watcher); _watcher = null; } }; var _bindCallbacks = function(callbacks) { CALLBACK.success = (callbacks.success || null); CALLBACK.error = (callbacks.error || null); }; var _success = function(position) { _position = position.coords; CALLBACK.success.call(CALLBACK.success, position); }; var _error = function(error) { _clearPosition(); CALLBACK.error.call(CALLBACK.error, error); }; return { get: get, watch: watch, position: position, address: address, stop: stop } })(LUNGO);