GPS/Location accuracy behavior in apps

I have questions on how apps can control the location info they get because I am confused even when reading the API docs.

1. What happens if I use the old-school method? 

Position.enableLocationEvents(Position.LOCATION_ONE_SHOT, method(:onPosition));

Will that mean GPS regardless of watch settings? What if in the watch settings, Ultratrac has been selected - that would mean that the frequency of updates would be reduced to one minute? Or what if in the watch settings, GPS+GLONASS is used? Would using this basically downgrade to GPS vs the GPS+GLONASS set in the watch settings?

My guess is that it would use whatever is in the watch settings (and actually looking at the USAGE doc of GliderSK here (https://github.com/cedric-dufour/connectiq-app-glidersk/blob/master/USAGE last section), this seems to imply that this method would use whatever was last used in a Garmin activity.

2. What happens when using the newer 3.2.0+ method?

Position.enableLocationEvents({
:acquisitionType => Position.LOCATION_CONTINUOUS,
:constellations => [ Position.CONSTELLATION_GPS, Position.CONSTELLATION_GALILEO ]
},
method(:onPosition)
);

So here I can control a list of constellations that can be used. In this example (straight from the API doc), the watch would effectively do a background reconciliation between GPS and GALILEO, correct? Could I even select all three methods (GPS, GLONASS, GALILEO) and assume the watch will reconcile the three in the background/transparently?

But same question as before, does that completely override user settings? What if the user has "Ultratrac" in the settings? I assume that would limit the updates to once a minute, regardless of what constellations are used. Is that correct?

3. What if a user has a Fenix 7 or Epix Gen 2 and has "All systems+multi-band" in the settings?

Would then using the older method be more precise than using the new method (as hopefully the old method doesn't override the watch settings)? Since the 3.2.0+ method would basically override the more accurate positioning method in the watch settings?

Sorry I know this is a lot of questions, and I apologize if there was some documentation that detailed this that I missed!

  • 1,  In that case with pre 3.2 CIQ it will use whatever was used last by a native app. With CIQ >=3.2, it will use GPS.  I'm pretty sure it will use GPS if Ultratrac was last used. But if GPS+GLONASS was last used (pre 3.2), it will use that. 

    With LOCATION_ONE_SHOT, be sure to check the accuracy, as you'll often see QUALITY_LAST_KNOWN, meaning it didn't get a new GPS fix.  What I do instead is use LOCATION_CONTINOUS, and then disable (LOCATION_DISABLE) GPS when I get an accuracy of QUALITY_USABLE or greater.  That way you get a fresh fix.

    2.  You can set GPS,GPS+GLASNOSS or GPS+GALILEO.  If you try GPS+GLOSNASS+GALILEO, it will throw an exception as it's an invalid combination.

    3.Not sure, but I think just normal GPS is used.  It may also use whatever was last used by a native app.

  • Thanks Jim!

    This is all very interesting information! (And yes the combination of continuous and quality is what I make use of, thanks for the tip!)

    Now it makes me wonder what the Fenix 7 and Epix Gen 2 use if the app sets GPS+GLONASS or GPS+GALILEO, since those watches use GNSS. My guess is that both GPS+GLONASS or GPS+GALILEO just translate to GNSS and are effectively identical for those watches, but not sure.

    Thanks again!