More Details on the Insidious iOS Snap-to-Road “Feature”

More iPhone Location-Track Testing

This post is a short followup to last month's The Scourge (or Beauty) of “Snap To Road” with iPhone Location-Tracking Apps, in which I explained how an attempt by Apple to make the iPhone location services more relevant for car navigation can end up destroying the accuracy for other uses such as geoencoding or fitness tracking. When enabled, the user's location is snapped to the center of the nearest road; internally Apple calls it Map Matching; I call it Snap to Road.

In the screenshot of Google Earth seen above, the red line, recorded with the Snap to Road feature disabled, mostly matches up with my green-line actual path (which I drew on the map by hand from memory), but the cyan line, recorded with Snap to Road enabled, is ridiculously devoid of detail... it makes it appear as if I was walking down the exact center of each road; you can't see what side of the road I was on, nor even that there are turns at the edges.

Unfortunately, this iOS feature can not simply be enabled or disabled by the user or the app developer — Apple, in its infinite wisdom, chooses when it goes on and off and does not share any details (or even confirm that it happens!) — so I wanted to do more testing to understand when it does or doesn't become enabled.

Evgen Bodunov, the developer of the most-excellent Galileo Offline Maps, kindly made a special version of his app for me which allowed me to explicitly choose the iOS CoreLocation service Activity Type. I did a bunch of riding around with the phone set to various situations, and came up with a few more details...

  • Snap to Road is tripped on when you exceed 20kph (12mph).

    In the screenshot, notice how the cyan line matches the actual track near the start of the ride, then halfway up the T it snaps to the center of the road. That's when my speed crested 20kph after riding slowly from the starting point.

    I'm not sure under what conditions it turns back off; merely slowing down to below that threshold is not sufficient to turn it back off, as I could continue at a walking pace for several minutes and it would not turn off.

    In some tests merely pausing or changing direction turned it off, but in other tests seemingly-similar actions did not turn it off. This remains a mystery.

  • iOS seems to require Internet access (or cached map data) for it to work.

    I disconnected my phone from the Internet (turned on airplane mode and turned off WiFi) and rebooted the phone, and I could not get the Snap to Road to kick in, even at fairly high speeds.

    In particular, it doesn't seem to use data cached in the built-in "Maps" app, which still displays its cached data in airplane mode.

    However, upon exiting airplane mode, Snap to Road kicked in the next time I exceeded 20kph.

  • The OtherNavigation activity type is the only CoreLocation activity type that does not invite Snap to Road on its own.

    This is a confirmation of what I reported previously, that even at high speeds, Snap to Road remain thankfully disabled with OtherNavigation. The other three activity types all get Snap to Road at 20kph.

    (However, there's still the caveat that if any app triggers Snap to Road, all apps get Snap to Road.)

As expected, I've not heard any reply from Apple on the bug report I submitted.


All 9 comments so far, oldest first...

That’s excellent research. However I’m confused about the Airplane Mode, in my experience Airplane mode also disables GPS.
(Note: Just researched this while typing it up. Airplane Mode disabled GPS in iOS 8.2 and earlier [source].)

Doing some brief research I wasn’t able to tell when the map matching feature was introduced.

The Snap-to-Road stuff started ruining my tracks when I upgraded to iOS9, but it’s been reported much earlier, so I take it that the iOS9 connection is related to when Apple got related map data for Kyoto. Just a guess, though. —Jeffrey

— comment by Pablo on January 19th, 2016 at 11:48pm JST (8 months, 8 days ago) comment permalink

Oh come one, please, … map matching is nothing special or new. In fact its a fundamental basic for road navigation. Turning it on if your speed exceeds 20kph seems to make sense, too. This is nowhere near a bug, …

Did you even read the article? —Jeffrey

— comment by Nick on January 25th, 2016 at 4:32pm JST (8 months, 2 days ago) comment permalink

So it seems like Apple wants to make sure you’re on a car before enabling it.

It seems that they don’t want to make sure, because if they did they would ask. One can go 30kph on a bicycle, horse, while windsurfing…. all things that are NOT in a car but for which snap-to-road would kick in and destroy the track. And even if you ARE in a car, their stupid algorithms destroy the track at some intersections you stop at. Like so much from Apple in the last 5ish years, it’s a nice idea very poorly thought out, but still shoved down our throats. )-: —Jeffrey

— comment by Francis Kim on January 27th, 2016 at 10:14pm JST (8 months ago) comment permalink

Apple seems to suffer from the cargo cult of simplicity.
They seem to view UI simplicity as the goal instead of viewing it as the end result of elegant design choices. Simplicity for the user is something you earn by making good design choices, it’s the end of a long arduous process. If you shortcut that, you don’t actually end up with something that is simple to use. You end up with something that looks easy to use but is actually very hard to use.
By failing to arrive at clean interfaces the hard way, they make their tools frustratingly inconsistent and difficult to use. Functionality is abstracted away from the user, but there is no consistent process by which the user can predict how to access these functions from program to program, or across the product line.

— comment by neil lopez on January 29th, 2016 at 1:45am JST (7 months, 30 days ago) comment permalink

“I’ve not heard any reply from Apple on the bug report” – you probably won’t. Apple is way too busy working on new products. I too reported an issue or bug – did I hear from them? All I hear are cricket sounds in the background!!

— comment by Antonio Espino on February 1st, 2016 at 6:38am JST (7 months, 27 days ago) comment permalink

I haven’t dealt with Apple bug reports, is there a way this can be upvoted?

I’m so glad I found this because I opened a support ticket with an app vendor blaming them, however it took me over a year to discover what was happening and I just put it together this weekend.

— comment by Michael on March 9th, 2016 at 3:41am JST (6 months, 19 days ago) comment permalink

So glad I have found an article on this. Some parts of my rides when I record with Strava are constantly being snapped, and not just to roads, one particular segment that goes along side a railway line gets snapped to that.
When I rode the other week with a friend he said he had run out of mobile data so I said it’s fine, Strava will work. I had data switched on. We both rode the same route, mine snapped to the railway line, his followed the road perfectly.

Now I am in a quandary as I want to have the data on for the maps to refresh so I can navigate new routes, I can’t use airplane mode as bluetooth will turn off and my heart rate monitor won’t work.

I have told Strava and they say it’s an increasing problem.

Another thing I noticed is that the more I seem to ride an area the more it will snap, maybe there is some kind of memory?

— comment by Michael Stokes on June 9th, 2016 at 6:00pm JST (3 months, 18 days ago) comment permalink

This appears to be resolved for me now. I didn’t notice it after the last update, I wonder if it was happening server side.

“Resolved” meaning that you’re not seeing the roadsnap where you used to? After 9.2.2? —Jeffrey

— comment by Michael on June 16th, 2016 at 3:22am JST (3 months, 12 days ago) comment permalink

Well I tested it briefly on the freeway the day I posted that and it was not snapping to roads for the short tests I ran. Yesterday I ran a test in a car at mostly high speed and it’s a mixed bag. Sometimes it snapped, sometimes it didn’t as far as I can tell there’s no rhyme or reason to the snap/unsnap parts.

https://ridewithgps.com/trips/9806134

P.S. I forgot to check the notification box last time.

— comment by Michael on July 7th, 2016 at 5:58am JST (2 months, 21 days ago) comment permalink
Leave a comment...


All comments are invisible to others until Jeffrey approves them.

Please mention what part of the world you're writing from, if you don't mind. It's always interesting to see where people are visiting from.


You can use basic HTML; be sure to close tags properly.

Subscribe without commenting