Added geolocation.js
Project: http://git-wip-us.apache.org/repos/asf/incubator-cordova-js/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-cordova-js/commit/4779732d Tree: http://git-wip-us.apache.org/repos/asf/incubator-cordova-js/tree/4779732d Diff: http://git-wip-us.apache.org/repos/asf/incubator-cordova-js/diff/4779732d Branch: refs/heads/master Commit: 4779732dcaeb02e8a0bc7cb233e6b32f52b6e939 Parents: 0a51b06 Author: mpberk <matthew.p.b...@intel.com> Authored: Fri Aug 17 10:44:27 2012 -0700 Committer: mpberk <matthew.p.b...@intel.com> Committed: Fri Aug 17 10:44:27 2012 -0700 ---------------------------------------------------------------------- lib/win8metro/platform.js | 13 ++- lib/win8metro/plugin/win8metro/geolocation.js | 89 ++++++++++++++++++++ 2 files changed, 97 insertions(+), 5 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-cordova-js/blob/4779732d/lib/win8metro/platform.js ---------------------------------------------------------------------- diff --git a/lib/win8metro/platform.js b/lib/win8metro/platform.js index 395059a..70933e1 100755 --- a/lib/win8metro/platform.js +++ b/lib/win8metro/platform.js @@ -38,10 +38,7 @@ module.exports = { console: { path: "cordova/plugin/win8metro/console" - }/*, - notification: { - path: 'cordova/plugin/notification' - }*/ + } } } @@ -58,7 +55,13 @@ module.exports = { merges: { MediaFile: { path: "cordova/plugin/win8metro/MediaFile" + }, + navigator: { + children: { + notification: { + path: 'cordova/plugin/win8metro/geolocation' + } + } } - } }; \ No newline at end of file http://git-wip-us.apache.org/repos/asf/incubator-cordova-js/blob/4779732d/lib/win8metro/plugin/win8metro/geolocation.js ---------------------------------------------------------------------- diff --git a/lib/win8metro/plugin/win8metro/geolocation.js b/lib/win8metro/plugin/win8metro/geolocation.js new file mode 100644 index 0000000..434dcf9 --- /dev/null +++ b/lib/win8metro/plugin/win8metro/geolocation.js @@ -0,0 +1,89 @@ +var Position = require('cordova/plugin/Position'), + PositionError = require('cordova/plugin/PositionError'); + +module.exports = { // Merges with common + + + getLocation:function(win, lose, args) { + // options.enableHighAccuracy + // options.maximumAge + // options.timeout + + var geolocator = new Windows.Devices.Geolocation.Geolocator(); + if (options.enableHighAccuracy) { + geolocator.desiredAccuracy = Windows.Devices.Geolocation.PositionAccuracy.high; + } + + geolocator.getGeopositionAsync(options.maximumAge, options.timeout).done( + function(geoposition) { + // Win8 JS API coordinate Object + win(geoposition.coordinate); + }, function() { + var e = new Object(); + + switch (geolocator.locationStatus) { + case Windows.Devices.Geolocation.PositionStatus.ready: + // Location data is available + e.message = "Location is available."; + e.code = PositionError.TIMEOUT; + lose (e); + break; + case Windows.Devices.Geolocation.PositionStatus.initializing: + // This status indicates that a GPS is still acquiring a fix + e.message = "A GPS device is still initializing."; + e.code = PositionError.POSITION_UNAVAILABLE; + lose(e); + break; + case Windows.Devices.Geolocation.PositionStatus.noData: + // No location data is currently available + e.message = "Data from location services is currently unavailable."; + e.code = PositionError.POSITION_UNAVAILABLE; + lose(e); + break; + case Windows.Devices.Geolocation.PositionStatus.disabled: + // The app doesn't have permission to access location, + // either because location has been turned off. + e.message = "Your location is currently turned off. " + + "Change your settings through the Settings charm " + + " to turn it back on."; + e.code = PositionError.PERMISSION_DENIED; + lose(e); + break; + case Windows.Devices.Geolocation.PositionStatus.notInitialized: + // This status indicates that the app has not yet requested + // location data by calling GetGeolocationAsync() or + // registering an event handler for the positionChanged event. + e.message = "Location status is not initialized because " + + "the app has not requested location data."; + e.code = PositionError.POSITION_UNAVAILABLE; + lose(e); + break; + case Windows.Devices.Geolocation.PositionStatus.notAvailable: + // Location is not available on this version of Windows + e.message = "You do not have the required location services " + + "present on your system."; + e.code = PositionError.POSITION_UNAVAILABLE; + lose(e); + break; + default: + e.code = PositionError.TIMEOUT; + lose(e); + break; + + } + } + ) + }, + + addWatch:function(win, lose, args) { + // id + // options + // options.maximumAge + // options.timeout + // timers[] + timers[id] = new Windows.Devices.Geolocation.Geolocator().getGeopositionAsync(options.maximumAge, options.timeout).done( + new Geolocation().getCurrentPosition(win, lose, options) + ) + } + // clearWatch is not needed as in common code the timer is deleted +}; \ No newline at end of file