Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Phonegap enable GPS/Location at app runtime

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,

  1. User does not have GPS/Location Services enabled.
  2. User opens the application and navigates to the view that calls navigator.geolocation to get the user's position
  3. The app errors out and notifies the user they must enable GPS/Location Services
  4. The user then navigates out of the app and enables GPS
  5. 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?

like image 523
mondeeds Avatar asked Nov 04 '13 22:11

mondeeds


2 Answers

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.

like image 98
Daniel Avatar answered Nov 20 '22 02:11

Daniel


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
  });
  }
like image 34
Alfred Alfizo Mosima Avatar answered Nov 20 '22 00:11

Alfred Alfizo Mosima