Location via GPS jumps

We have a that relies on accurate GPS location but we’ve noticed that every now and then the location ‘jumps’ a few hundred meters to a different location but reports horizonal accuracy less than 10m.

we think the device is picking up a rough location from a local WiFi rather than internal gps sensors.

can we a) disable WiFi location Updates? b) identify WiFi location Updates?

thank You

It is not possible to disable WiFi updates. the requiredAccuracy property will force GPS updates if set to 10 meters or less, but if you are in a position where a clear GPS fix cannot be obtained, then CoreLocation will fall back to WiFi or mobile tower based locations but the horizontalAccuracy will no longer be 10 meters. For WiFi you will see 65 meters or more.

While not every 65 meter accuracy location will be WiFi based, no WiFi based location should be 10 meters. So it is likely something else going on here.

iOS uses fused data from GPS, WiFi, other sources, and corrects based on data from the motion chip.

It is possible that one of those sources is feeding something else. Or perhaps your location does not have a clear sky view and there are reflections of the signal. This is a typical issue with city centers with a lot of glass high-rises.

In any case, these will all be guesses. To understand the issue truly, we will need some diagnostic logs from the affected device.

If you are interested in having our engineering teams to investigate this issue, you could open a bug report, include details about your location and test cases, and also include a diagnostic log.

To obtain that, please go to https://developer.apple.com/bug-reporting/profiles-and-logs/ and follow the instructions for Location Services for iOS to install a logging profile on your device.

Then reproduce the issue, and follow the instructions at the above link to create a sysdiagnose. And attach that to the Feedback report as well.

Bug Reporting: How and Why? has tips on creating a successful bug report.

Hello Engineer, thank you for your helpful reply. we are on the water on a boat near the coast. The sky is clear and there are no obstructions. We (and others) have noticed that the phone location jumps from the gps location to a nearby location, last time this was 144m away with 9m accuracy. We rely on accurate gps location for safety and critical alerts. The incorrect gps location is always on shore. We have determined (old location to new location distance and time hence) speed and if it’s great than 10m/s it’s a false signal and we wait for a good signal. Nothing on the phone appears to change to trigger the jump, nothing physical either.

Is this happening when the boat is floating around very slowly? Also, does the placement of the phone change things, as in handheld vs. mounted, and perhaps changing the mounting position?

What would be important here is the .activityType your app is using. If you have selected a different type, you may want to try CLActivityType.other and see if that changes your results. The wrong locations jumping to the shore sounds like the system is trying to correct to a "possible" location at the shore.

In any case, if the issue only happens when slowly floating, or the phone's position changes the results, we would still like to see the diagnostic logs through a bug report (I explained how to obtain the logs above).

Hello Engineer,

thank you again for your reply. I’ve been travelling so please excuse my delayed reply.

yes the boat is floating around very slowly, often 100-400m from shore.

im using clservicesession .whenInUse and have not specified an activity type. Is this even possible? if for whatever reason I get no update from clservicesession for more than 30s I trigger a get current location using cllocationmanager .requestLocation using bestForNavigation but haven’t specified an activity type. My log above suggests that it’s this service that has triggered the jump.

The hard thing about diagnostic report is catching the jump, the phone can be actively monitoring location as required for 8h then jumps, it could come down to low satellites in orbit, but the phone remains unmoved connected to power in foreground for the duration.

i’ll do more research on activity type for clservicesession and clLocationManager and try and get more diagnostics.

thank you, Brendan

Hi,

Hello,

I’ve done two things… 1) connected a garmin glo 2 gps device via Bluetooth. This improves gps accuracy but still we see a bias towards the road in clservicesessio, how do I specify a marine activity type?. See image. And 2) monitored behaviour from other users who also report the same location behaviour across multiple apps including Apple Maps.

This is a real problem for safety. Can you help?

thank you,

Hi Engineer,

I also wanted to add that I can confirm that activityType .otherNavigation was always set via:

@State var updates = CLLocationUpdate.liveUpdates(.otherNavigation)

Recap: The device "jumps" 50 or more meters from the boat to a false location, often on shore giving a false warning. And later jumps back. The jump is also seen on apple apps such as findmy or maps.

I have determined a way to detect these jumps by calculating the speed between two consecutive updates... if it's greater than 10m/s then it must be false, and we wait for a return.

The device has a clear unobstructed view of the sky and no nearby buildings, and is slowly floating around. The app remains in foreground.

Any further ideas would be appreciated.

Kind regards, Brendan

Thank you for your help again.

We are aware of an issue with locations when boats are just slowly drifting. And more reproductions and collected data is always welcome and useful to help the location team towards their goal for a solution.

If you would be able to create the sysdiagnose as I mentioned and file a bug report, that would be the best way to get the attention of someone who can do something about it.

And please don't forget to share the Feedback ID here once done.

Location via GPS jumps
 
 
Q