{"id":2666,"date":"2016-01-19T19:59:43","date_gmt":"2016-01-19T10:59:43","guid":{"rendered":"https:\/\/regex.info\/blog\/2016-01-19\/2666"},"modified":"2016-01-19T19:59:43","modified_gmt":"2016-01-19T10:59:43","slug":"more-details-on-the-insidious-ios-snap-to-road-feature","status":"publish","type":"post","link":"https:\/\/regex.info\/blog\/2016-01-19\/2666","title":{"rendered":"More Details on the Insidious iOS Snap-to-Road &#8220;Feature&#8221;"},"content":{"rendered":"\n\n<div class='ic tight'>\n<img loading=\"lazy\" decoding=\"async\" src=\"\/apple-bug-23737784\/new-test-T.png\" width=\"690\" height=\"407\"\nid=\"inew_test_T\"\/>\n<br\/><span class='caption'>More iPhone Location-Track Testing<\/span>\n<meta itemprop='about' content=\"More iPhone Location-Track Testing\"\/><\/div>\n\n<p>This post is a short followup to last month's <span class='QO'>&#8220;<\/span><a href='\/blog\/2015-12-03\/2651' class='pt'>The Scourge (or\nBeauty) of \u201cSnap To Road\u201d with iPhone Location-Tracking Apps<\/a><span class='QC'>&#8221;<\/span>, in which <span class='nobr'>I explained<\/span> how an attempt by Apple to make the iPhone\nlocation services more relevant for car navigation can end up destroying the accuracy for other uses such as geoencoding or\nfitness tracking. When enabled, the user's location is <span class='QO'>&#8220;<\/span>snapped<span class='QC'>&#8221;<\/span> to the center of the nearest road; internally Apple calls\nit <span class='QO'>&#8220;<\/span>Map Matching<span class='QC'>&#8221;<\/span>; <span class='nobr'>I call<\/span> it <span class='QO'>&#8220;<\/span>Snap to Road<span class='QC'>&#8221;<\/span>.<\/p>\n\n\n<p>In the screenshot of Google Earth seen above, the red line, recorded with the <span class='QO'>&#8220;<\/span>Snap to Road<span\nclass='QC'>&#8221;<\/span> feature disabled, mostly matches up with my green-line actual path (which <span class='nobr'>I drew<\/span> on the map by hand from\nmemory), but the cyan line, recorded with <span class='QO'>&#8220;<\/span>Snap to Road<span class='QC'>&#8221;<\/span> enabled, is\nridiculously devoid of detail... it makes it appear as if <span class='nobr'>I was<\/span> walking down the exact center of each\nroad; you can't see what side of the road <span class='nobr'>I was<\/span> on, nor even that there are turns at the edges.<\/p>\n\n<p>Unfortunately, this iOS feature can not simply be enabled or disabled by the user or the app developer &mdash; Apple, in its\ninfinite wisdom, chooses when it goes on and off and does not share any details (or even confirm that it happens!) &mdash; so\n<span class='nobr'>I wanted<\/span> to do more testing to understand when it does or doesn't become enabled.<\/p>\n\n<p>Evgen Bodunov, the developer of the most-excellent\n<strike>Galileo Offline Maps<\/strike> (Name changed Feb 2019 to <a href='https:\/\/gurumaps.app\/'>Guru Maps<\/a>), kindly made <span class='nobr'>a special<\/span> version of his app\nfor me which allowed me to explicitly choose the iOS CoreLocation service\n<span class='QO'>&#8220;<\/span><a href='\/blog\/2015-12-03\/2651#activity-type'>Activity Type<\/a><span class='QC'>&#8221;<\/span>.\n<span class='nobr'>I did<\/span> <a href='https:\/\/www.strava.com\/activities\/473579512'><span class='nobr'>a bunch<\/span> of riding around<\/a> with the phone set to\nvarious situations, and came up with <span class='nobr'>a few<\/span> more details...<\/p>\n\n<style type=\"text\/css\">\nul#snaplist li { margin-bottom: 30px }\n<\/style>\n\n<ul id='snaplist'>\n<li><p><b><span class='QO'>&#8220;<\/span>Snap to Road<span class='QC'>&#8221;<\/span> is tripped on when you exceed 20kph (12mph).<\/b><\/p>\n\n<p>In the screenshot, notice how the cyan line matches the actual track near the start of the ride, then halfway up the <span class='QO'>&#8220;<\/span>T<span class='QC'>&#8221;<\/span> it snaps\nto the center of the road. That's when my speed crested 20kph after riding slowly from the starting point.<\/p>\n\n<p>I'm not sure under what conditions it turns back off; merely slowing down to below that threshold is not sufficient to turn it\nback off, as <span class='nobr'>I could<\/span> continue at <span class='nobr'>a walking<\/span> pace for several minutes and it would not turn off.<\/p>\n\n<p>In some tests merely pausing or changing direction turned it off, but in other tests seemingly-similar actions did not turn it\noff. This remains <span class='nobr'>a mystery.<\/span><\/p>\n\n<\/li><li><p><b>iOS seems to require Internet access (or cached map data) for it to work.<\/b><\/p>\n<p>I disconnected my phone from the Internet (turned on airplane mode and turned off WiFi) and rebooted\nthe phone, and <span class='nobr'>I could<\/span> not get the <span class='QO'>&#8220;<\/span>Snap to Road<span class='QC'>&#8221;<\/span> to kick in, even at fairly high speeds.<\/p>\n\n<p>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.<\/p>\n\n<p>However, upon exiting airplane mode, <span class='QO'>&#8220;<\/span>Snap to Road<span class='QC'>&#8221;<\/span> kicked in the next time <span class='nobr'>I exceeded<\/span> 20kph.<\/p>\n\n<\/li><li><p><b>The <span class='QO'>&#8220;<\/span><tt>OtherNavigation<\/tt><span class='QC'>&#8221;<\/span> activity type is the only CoreLocation activity type that does not\ninvite <span class='QO'>&#8220;<\/span>Snap to Road<span class='QC'>&#8221;<\/span> on its own.<\/b><\/p>\n\n<p>This is a confirmation of what <span class='nobr'>I reported<\/span> previously, that  even at high speeds, <span class='QO'>&#8220;<\/span>Snap to Road<span class='QC'>&#8221;<\/span> remain thankfully disabled\nwith <tt>OtherNavigation<\/tt>. <span class='nobr'>The other<\/span> three\nactivity types all get <span class='QO'>&#8220;<\/span>Snap to Road<span class='QC'>&#8221;<\/span> at 20kph.<\/p>\n\n<p>(However, there's still the caveat that if <i>any<\/i> app triggers <span class='QO'>&#8220;<\/span>Snap to Road<span class='QC'>&#8221;<\/span>, <i>all<\/i> apps get <span class='QO'>&#8220;<\/span>Snap to Road<span class='QC'>&#8221;<\/span>.)<\/p>\n\n<\/li><\/ul>\n\n<p>As expected, I've not heard any reply from Apple on the bug report <span class='nobr'>I submitted.<\/span>\n<\/p>\n\n","protected":false},"excerpt":{"rendered":"<p>This post is a short followup to last month's \"The Scourge (or Beauty) of \u201cSnap To Road\u201d 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\".<\/p> <p>In the screenshot of Google Earth seen above, the red line, recorded with the \"Snap to Road\" feature [...]","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[30,1,4],"tags":[],"_links":{"self":[{"href":"https:\/\/regex.info\/blog\/wp-json\/wp\/v2\/posts\/2666"}],"collection":[{"href":"https:\/\/regex.info\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/regex.info\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/regex.info\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/regex.info\/blog\/wp-json\/wp\/v2\/comments?post=2666"}],"version-history":[{"count":0,"href":"https:\/\/regex.info\/blog\/wp-json\/wp\/v2\/posts\/2666\/revisions"}],"wp:attachment":[{"href":"https:\/\/regex.info\/blog\/wp-json\/wp\/v2\/media?parent=2666"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/regex.info\/blog\/wp-json\/wp\/v2\/categories?post=2666"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/regex.info\/blog\/wp-json\/wp\/v2\/tags?post=2666"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}