I am using jquery-ui-maps and HTML5 geolocation to show to the user a list of locations and I need to leverage the user's geolocation.
So, here is the use case,
- User does not have GPS/Location Services enabled.
- User opens the application and navigates to the view that calls navigator.geolocation to get the user's position
- The app errors out and notifies the user they must enable GPS/Location Services
- The user then navigates out of the app and enables GPS
- When the user comes back to the app and tries to view the map (calling the geolocation again) the app still isn't able to use GPS.
I believe I have narrowed it down to being a Phonegap issue where the GPS permissions are initialized at app load and never reevaluated.
My question is, can GPS be enabled during the runtime of the application or does Phonegap require an app reload to use the GPS?
Phonegap does support realtime update of your GPS.
Here is a direct link:
http://docs.phonegap.com/en/3.1.0/cordova_geolocation_geolocation.md.html#geolocation.watchPosition
In general its called "watch position", and you can set the refresh timer yourself.
Regarding enabling the GPS during runtime.
Try just to call navigator.geolocation.watchPosition()
.
Remember to grant access to geolocation on your config.xml as well, but I guess you know that ;)
I hope it helped.
after struggling for a while i found a plugin that was able to help me with the same issue
https://github.com/nishantsharmajecrc/cordova-dialog-gps
function calldialog() {
document.addEventListener("deviceready",function() {
cordova.dialogGPS("Your GPS is Disabled, this app needs to be enable to works.",//message
"Use GPS, with wifi or 3G.",//description
function(buttonIndex){//callback
switch(buttonIndex) {
case 0: break;//cancel
case 1: break;//neutro option
case 2: break;//user go to configuration
}},
"Please Turn on GPS",//title
["Cancel","Later","Go"]);//buttons
});
}