<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Re: When Driving Navigation Arrow Going Beyond Map Actual Route in ArcGIS Runtime SDK for iOS Questions</title>
    <link>https://community.esri.com/t5/arcgis-runtime-sdk-for-ios-questions/when-driving-navigation-arrow-going-beyond-map/m-p/560542#M4834</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi &lt;A href="https://community.esri.com/migrated-users/336354"&gt;Manasa&lt;/A&gt;.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;By default, the polyline will be turned into &lt;A href="https://developers.arcgis.com/ios/latest/api-reference/interface_a_g_s_location.html"&gt;AGSLocations&lt;/A&gt;, with one for each point in the source polyline. Remember that if&amp;nbsp;you densify a polyline, you will get the original points plus any densification results, so they might be less than &lt;STRONG&gt;maxSegmentLength&lt;/STRONG&gt; apart.‌&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Once you have called &lt;STRONG&gt;AGSSimulatedLocationDataSource.setLocationsWithPolyline&lt;/STRONG&gt;, the&amp;nbsp;&lt;STRONG&gt;AGSSimulatedLocationDataSource.&lt;/STRONG&gt;&lt;STRONG&gt;locations&lt;/STRONG&gt; array will be populated with AGSLocations. These locations will be provided to the AGSLocationDisplay at 1 location per second.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Each location in the &lt;STRONG&gt;locations&lt;/STRONG&gt; array&amp;nbsp;will initially have a velocity of -1 and a course of -1. You can modify the velocities and courses to a value &amp;gt;= 0 if need be. The &lt;STRONG&gt;AGSSimulatedLocationDataSource&lt;/STRONG&gt; will emit a location every second. If it finds a velocity &amp;lt; 0, it will use 1 meter per second. If it finds a course &amp;lt; 0, it will calculate heading&amp;nbsp;based off the direction from the previous location to the current location.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;For the GPX data, it looks like we ignore the timestamps on the GPX source points, and emit one location every second regardless of the timing of the original data points. That probably explains why it looks like it's running too fast.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Mon, 18 Mar 2019 17:29:40 GMT</pubDate>
    <dc:creator>Nicholas-Furness</dc:creator>
    <dc:date>2019-03-18T17:29:40Z</dc:date>
    <item>
      <title>When Driving Navigation Arrow Going Beyond Map Actual Route</title>
      <link>https://community.esri.com/t5/arcgis-runtime-sdk-for-ios-questions/when-driving-navigation-arrow-going-beyond-map/m-p/560538#M4830</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Dear All,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I was trying to test the map-app-ios with few customization from my side using AGSGeometryEngine Class to speech the direction text, after my integration i was trying to text the app how it was behaving when i am driving. Here with i am attaching 2 screenshot which i found at the time of testing the app, necessary help would be appreciate for the way forward to achieve my goal.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Also here i am attaching few code snippet how i was trying to achieve the text to speech recogniser.&lt;/P&gt;&lt;P&gt;// Tracking the current/updated new location from&amp;nbsp;&lt;SPAN&gt;locatidHandler&lt;/SPAN&gt;&lt;/P&gt;&lt;P class=""&gt;mapView&lt;SPAN class=""&gt;.&lt;/SPAN&gt;locationDisplay&lt;SPAN class=""&gt;.&lt;/SPAN&gt;locatidHandler&lt;SPAN class=""&gt; = { [weak &lt;/SPAN&gt;&lt;SPAN class=""&gt;self&lt;/SPAN&gt;&lt;SPAN class=""&gt;] location &lt;/SPAN&gt;&lt;SPAN class=""&gt;in&lt;/SPAN&gt;&lt;/P&gt;&lt;P class=""&gt;&lt;SPAN class=""&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;// Have a new function and passing the new location to it.&lt;/SPAN&gt;&lt;/P&gt;&lt;P class=""&gt;&lt;SPAN class=""&gt;&lt;SPAN class=""&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN class=""&gt;&lt;/SPAN&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;SPAN class=""&gt;self&lt;/SPAN&gt;?.&lt;SPAN class=""&gt;callFunctionAndPlayWith&lt;/SPAN&gt;(newLocation: location)&lt;/P&gt;&lt;P class=""&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;}&lt;/P&gt;&lt;P class=""&gt;// Function Implementation&lt;/P&gt;&lt;P class=""&gt;&lt;SPAN class=""&gt;func&amp;nbsp;&lt;/SPAN&gt; &lt;SPAN&gt;call&lt;/SPAN&gt;&lt;SPAN&gt;FunctionAndPlayWith&lt;/SPAN&gt;(newLocation: &lt;SPAN class=""&gt;AGSLocation&lt;/SPAN&gt;){&lt;/P&gt;&lt;P class=""&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; // check the Location Point is there or not&lt;/SPAN&gt;&lt;/P&gt;&lt;P class=""&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;SPAN class=""&gt;guard&lt;/SPAN&gt; newLocation.&lt;SPAN class=""&gt;position&lt;/SPAN&gt; != &lt;SPAN class=""&gt;nil&lt;/SPAN&gt; &lt;SPAN class=""&gt;else&lt;/SPAN&gt; {&lt;/P&gt;&lt;P class=""&gt;&lt;SPAN class=""&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN class=""&gt;print&lt;/SPAN&gt;&lt;SPAN class=""&gt;(&lt;/SPAN&gt;"Unable to found the new location position"&lt;SPAN class=""&gt;)&lt;/SPAN&gt;&lt;/P&gt;&lt;P class=""&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;SPAN class=""&gt;return&lt;/SPAN&gt;&lt;/P&gt;&lt;P class=""&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;}&lt;/P&gt;&lt;P class=""&gt;&lt;/P&gt;&lt;P class=""&gt;&lt;SPAN class=""&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;// get the geodeticBufferGeometry from newLocation.position&lt;/SPAN&gt;&lt;/P&gt;&lt;P class=""&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;SPAN class=""&gt;let&lt;/SPAN&gt; geodeticBufferGeometryOfCurrentLocation = &lt;SPAN class=""&gt;self&lt;/SPAN&gt;.&lt;SPAN class=""&gt;geodeticBufferGeometry&lt;/SPAN&gt;(maneuverGeometry: newLocation.&lt;SPAN class=""&gt;position&lt;/SPAN&gt;!)&lt;/P&gt;&lt;P class=""&gt;&lt;/P&gt;&lt;P class=""&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; // Get the route result from Mode&lt;/SPAN&gt;&lt;/P&gt;&lt;P class=""&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;SPAN class=""&gt;switch&lt;/SPAN&gt; &lt;SPAN class=""&gt;self&lt;/SPAN&gt;.&lt;SPAN class=""&gt;mode&lt;/SPAN&gt; {&lt;/P&gt;&lt;P class=""&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;SPAN class=""&gt;case&lt;/SPAN&gt; .&lt;SPAN class=""&gt;routeResult&lt;/SPAN&gt;(&lt;SPAN class=""&gt;let&lt;/SPAN&gt; route):&lt;/P&gt;&lt;P class=""&gt;&lt;/P&gt;&lt;P class=""&gt;&lt;SPAN class=""&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//&amp;nbsp;E&lt;SPAN&gt;numerate the array&lt;/SPAN&gt;&amp;nbsp;to get the actual index data which intersect the geodeticGeometryValue&lt;/SPAN&gt;&lt;/P&gt;&lt;P class=""&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;route.&lt;SPAN class=""&gt;directionManeuvers&lt;/SPAN&gt;.&lt;SPAN class=""&gt;enumerated&lt;/SPAN&gt;().&lt;SPAN class=""&gt;forEach&lt;/SPAN&gt; { (index, value) &lt;SPAN class=""&gt;in&lt;/SPAN&gt;&lt;/P&gt;&lt;P class=""&gt;&lt;SPAN class=""&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P class=""&gt;&lt;SPAN class=""&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;// Skipping the first Index as its my start location (for testing)&lt;/SPAN&gt;&lt;/P&gt;&lt;P class=""&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;SPAN class=""&gt;if&lt;/SPAN&gt;(index != &lt;SPAN class=""&gt;0&lt;/SPAN&gt;){&lt;/P&gt;&lt;P class=""&gt;&lt;/P&gt;&lt;P class=""&gt;&lt;SPAN class=""&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;// Intersected Index Found from &lt;SPAN&gt;directionManeuvers&lt;/SPAN&gt; Array&lt;/SPAN&gt;&lt;/P&gt;&lt;P class=""&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;SPAN class=""&gt;let&lt;/SPAN&gt; isUserIntersectsToPlannedRoute = &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN class=""&gt;AGSGeometryEngine&lt;/SPAN&gt;.&lt;SPAN class=""&gt;geometry&lt;/SPAN&gt;(geodeticBufferGeometryOfCurrentLocation, intersects: value.&lt;SPAN class=""&gt;geometry&lt;/SPAN&gt;!)&lt;/P&gt;&lt;P class=""&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;// Check if if intersected then good to go&lt;/P&gt;&lt;P class=""&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;SPAN class=""&gt;if&lt;/SPAN&gt;(isUserIntersectsToPlannedRoute == &lt;SPAN class=""&gt;true&lt;/SPAN&gt;) {&lt;/P&gt;&lt;P class=""&gt;&lt;/P&gt;&lt;P class=""&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;// Check if we already speech then no need to speech again the same direction text&lt;/P&gt;&lt;P class=""&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;// Else speech as its a newly intersected point to speech&lt;/P&gt;&lt;P class=""&gt;&lt;/P&gt;&lt;P class=""&gt;&lt;SPAN class=""&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN class=""&gt;if&lt;/SPAN&gt;&lt;SPAN class=""&gt;(&lt;/SPAN&gt;&lt;SPAN class=""&gt;self&lt;/SPAN&gt;&lt;SPAN class=""&gt;.&lt;/SPAN&gt;currentDirectionManeuver&lt;SPAN class=""&gt;?.&lt;/SPAN&gt;directionText&lt;SPAN class=""&gt; != value.&lt;/SPAN&gt;directionText&lt;SPAN class=""&gt;){&lt;/SPAN&gt;&lt;/P&gt;&lt;P class=""&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;SPAN class=""&gt;let&lt;/SPAN&gt; newInstance = &lt;SPAN class=""&gt;DirectionsDisplayViewController&lt;/SPAN&gt;()&lt;/P&gt;&lt;P class=""&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;newInstance.&lt;SPAN class=""&gt;textToSpeech&lt;/SPAN&gt;(directionText: value.&lt;SPAN class=""&gt;directionText&lt;/SPAN&gt;)&lt;/P&gt;&lt;P class=""&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;SPAN class=""&gt;self&lt;/SPAN&gt;.&lt;SPAN class=""&gt;currentDirectionManeuver&lt;/SPAN&gt; = value&lt;/P&gt;&lt;P class=""&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;}&lt;/P&gt;&lt;P class=""&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;}&lt;/P&gt;&lt;P class=""&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;}&lt;/P&gt;&lt;P class=""&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;}&lt;/P&gt;&lt;P class=""&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;SPAN class=""&gt;default&lt;/SPAN&gt;:&lt;/P&gt;&lt;P class=""&gt;&lt;SPAN class=""&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN class=""&gt;print&lt;/SPAN&gt;&lt;SPAN class=""&gt;(&lt;/SPAN&gt;"Mode is default"&lt;SPAN class=""&gt;)&lt;/SPAN&gt;&lt;/P&gt;&lt;P class=""&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;}&lt;/P&gt;&lt;P class=""&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;}&lt;/P&gt;&lt;P class=""&gt;&lt;/P&gt;&lt;P class=""&gt;&lt;SPAN class=""&gt;func&lt;/SPAN&gt; geodeticBufferGeometry(maneuverGeometry geometry:&lt;SPAN class=""&gt;AGSGeometry&lt;/SPAN&gt;) -&amp;gt; &lt;SPAN class=""&gt;AGSPolygon&lt;/SPAN&gt; {&lt;/P&gt;&lt;P class=""&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; // Capturing 40 Meters Distance for the &lt;SPAN&gt;geodeticBufferGeometry&lt;/SPAN&gt;&amp;nbsp;to check the intersect to speech&amp;nbsp;the new route.&lt;/SPAN&gt;&lt;/P&gt;&lt;P class=""&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;SPAN class=""&gt;return&lt;/SPAN&gt; &lt;SPAN class=""&gt;AGSGeometryEngine&lt;/SPAN&gt;.&lt;SPAN class=""&gt;geodeticBufferGeometry&lt;/SPAN&gt;(geometry, distance: &lt;SPAN class=""&gt;40&lt;/SPAN&gt;, distanceUnit: &lt;SPAN class=""&gt;AGSLinearUnit&lt;/SPAN&gt;.&lt;SPAN class=""&gt;meters&lt;/SPAN&gt;(), maxDeviation: &lt;SPAN class=""&gt;1&lt;/SPAN&gt;, curveType: &lt;SPAN class=""&gt;AGSGeodeticCurveType&lt;/SPAN&gt;.&lt;SPAN class=""&gt;shapePreserving&lt;/SPAN&gt;)!&lt;/P&gt;&lt;P class=""&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;}&lt;/P&gt;&lt;P class=""&gt;&lt;/P&gt;&lt;P class=""&gt;The above changes i have&amp;nbsp;done to test the app.&lt;/P&gt;&lt;P class=""&gt;But&amp;nbsp;When Driving Navigation Arrow Going Beyond Map Actual Route or Road. please have a look on the below attached screenshot.&lt;/P&gt;&lt;P class=""&gt;Would be great and helpful if you can suggest some trick&amp;nbsp;how to&amp;nbsp;test the app with Real Time Driving and Navigation.&lt;/P&gt;&lt;P class=""&gt;&lt;/P&gt;&lt;P class=""&gt;&lt;IMG __jive_id="422885" class="image-2 jive-image" src="https://community.esri.com/legacyfs/online/422885_pastedImage_2.png" /&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 25 Sep 2018 14:04:15 GMT</pubDate>
      <guid>https://community.esri.com/t5/arcgis-runtime-sdk-for-ios-questions/when-driving-navigation-arrow-going-beyond-map/m-p/560538#M4830</guid>
      <dc:creator>ManasaParida</dc:creator>
      <dc:date>2018-09-25T14:04:15Z</dc:date>
    </item>
    <item>
      <title>Re: When Driving Navigation Arrow Going Beyond Map Actual Route</title>
      <link>https://community.esri.com/t5/arcgis-runtime-sdk-for-ios-questions/when-driving-navigation-arrow-going-beyond-map/m-p/560539#M4831</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Any update from &lt;A href="https://community.esri.com/space/2135"&gt;ArcGIS Runtime SDK for iOS&lt;/A&gt;‌ support team please ?&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sun, 30 Sep 2018 08:57:19 GMT</pubDate>
      <guid>https://community.esri.com/t5/arcgis-runtime-sdk-for-ios-questions/when-driving-navigation-arrow-going-beyond-map/m-p/560539#M4831</guid>
      <dc:creator>ManasaParida</dc:creator>
      <dc:date>2018-09-30T08:57:19Z</dc:date>
    </item>
    <item>
      <title>Re: When Driving Navigation Arrow Going Beyond Map Actual Route</title>
      <link>https://community.esri.com/t5/arcgis-runtime-sdk-for-ios-questions/when-driving-navigation-arrow-going-beyond-map/m-p/560540#M4832</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hey &lt;A href="https://community.esri.com/migrated-users/336354"&gt;Manasa Parida&lt;/A&gt;‌,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I wonder if there's some confusion about the purpose of the Maps App here?&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;The Runtime SDK does not offer a navigation experience (just a routing experience, i.e. we can get you directions, but you have to get yourself to your destination) and does not track&amp;nbsp;you along a route that you've got planned. The Maps App doesn't add anything to that, so the fact that your location has deviated from the route,&amp;nbsp;as in the screenshots above, is expected. You would need to add additional logic to your&amp;nbsp;app if you want the location snapped to the route task result.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;One approach might&amp;nbsp;be to write your own AGSLocationDataSource that you pass a route task result to and as your data source reads updated&amp;nbsp;locations from Core Location, your custom data source&amp;nbsp;snaps the results to the current route, returning those to the AGSLocationDisplay. That way the map view will show you on the route if you're nearby.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I hope I've understood your question properly. I think the crux of it is that there's no relationship between the route task result that you're displaying and the device's displayed location, and that is as designed.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Nick.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sun, 14 Oct 2018 18:27:56 GMT</pubDate>
      <guid>https://community.esri.com/t5/arcgis-runtime-sdk-for-ios-questions/when-driving-navigation-arrow-going-beyond-map/m-p/560540#M4832</guid>
      <dc:creator>Nicholas-Furness</dc:creator>
      <dc:date>2018-10-14T18:27:56Z</dc:date>
    </item>
    <item>
      <title>Re: When Driving Navigation Arrow Going Beyond Map Actual Route</title>
      <link>https://community.esri.com/t5/arcgis-runtime-sdk-for-ios-questions/when-driving-navigation-arrow-going-beyond-map/m-p/560541#M4833</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi Nicholas,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Just to reminding the old post,&amp;nbsp;if we follow&amp;nbsp;the above mentioned&amp;nbsp;approach then i am&amp;nbsp;bit wondering how our Custom data source (the one which we get from route task result as route information)&amp;nbsp;will know the speed of the device movement because the custom data which we are injecting to&amp;nbsp;&lt;SPAN style="background-color: #ffffff;"&gt;AGSLocationDataSource is our route result also we are not passing any information in the custom data as speed to follow/navigate.&amp;nbsp;Let's discuss into more depth, in&amp;nbsp;my case if we have traffic and barriers then how we can manage those navigation movement based on the current road, how will&amp;nbsp;&lt;SPAN&gt;AGSLocationDataSource will fire to invoke&amp;nbsp;the&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;locationChangedHandler to get frequent update. May be&amp;nbsp;my approach is wrong to achieve or is there any other way you could suggest us to follow.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="background-color: #ffffff;"&gt;One approach i tried, it is also you only suggested : I crated a GPX file using some tool from google and injected that gpx file as&amp;nbsp;&lt;SPAN&gt;AGSLocationDataSource for my testing purpose in that raw file i couldn't found the speed to follow the navigation it is going like crazy, i guess its going 100+ speed.&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="background-color: #ffffff;"&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="background-color: #ffffff;"&gt;&lt;SPAN&gt;Snap to road which&amp;nbsp;i&amp;nbsp;am trying is using GeometryEngine Class&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P class=""&gt;&lt;SPAN class=""&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P class=""&gt;&lt;SPAN class=""&gt;// I am coverting my routeTask Result&amp;nbsp;&lt;SPAN&gt;directionManuever entire geometry to polyline&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P class=""&gt;&lt;SPAN class=""&gt;let&lt;/SPAN&gt; polyline = directionManuever.&lt;SPAN class=""&gt;geometry&lt;/SPAN&gt; &lt;SPAN class=""&gt;as&lt;/SPAN&gt;? &lt;SPAN class=""&gt;AGSPolyline&lt;/SPAN&gt;&lt;/P&gt;&lt;P class=""&gt;&lt;SPAN class=""&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P class=""&gt;&lt;SPAN class=""&gt;// Then using those polyline to create points of each 5 meters length using&amp;nbsp;&lt;SPAN&gt;densifyGeometry&lt;/SPAN&gt;&lt;BR /&gt;guard&lt;/SPAN&gt; &lt;SPAN class=""&gt;let&lt;/SPAN&gt; geodeticPath = &lt;SPAN class=""&gt;AGSGeometryEngine&lt;/SPAN&gt;.&lt;SPAN class=""&gt;densifyGeometry&lt;/SPAN&gt;(&lt;SPAN class=""&gt;self&lt;/SPAN&gt;.&lt;SPAN class=""&gt;polyLine&lt;/SPAN&gt;!, maxSegmentLength: &lt;SPAN class=""&gt;15&lt;/SPAN&gt;) &lt;SPAN class=""&gt;else&lt;/SPAN&gt; {&amp;nbsp;&lt;SPAN class=""&gt;return&lt;/SPAN&gt;&lt;SPAN class=""&gt;&amp;nbsp;&lt;/SPAN&gt;}&lt;/P&gt;&lt;P class=""&gt;&lt;SPAN class=""&gt;&lt;BR /&gt;// Assign the new 5 meters point to my global polyline variable , which i found from the above&amp;nbsp;&lt;SPAN&gt;densifyGeometry&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P class=""&gt;&lt;SPAN class=""&gt;self&lt;/SPAN&gt;.&lt;SPAN class=""&gt;polyLine&lt;/SPAN&gt; = geodeticPath &lt;SPAN class=""&gt;as&lt;/SPAN&gt;? &lt;SPAN class=""&gt;AGSPolyline&lt;/SPAN&gt;&lt;/P&gt;&lt;P class=""&gt;&lt;SPAN class=""&gt;// Now this polyline i am comparing with my currentlocation as buffer to snap the navigation symbol.&lt;/SPAN&gt;&lt;/P&gt;&lt;P class=""&gt;&lt;SPAN class=""&gt;But it doesn't help me to achieve my goal.&lt;/SPAN&gt;&lt;/P&gt;&lt;P class=""&gt;&lt;SPAN class=""&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P class=""&gt;&lt;SPAN class=""&gt;Please have a look into my screen recorded scenario and help me out to do some out of box work.&lt;div class="lia-vid-container video-embed-center"&gt;&lt;div id="lia-vid-6162668123001w320h240r202" class="lia-video-brightcove-player-container"&gt;&lt;video-js data-video-id="6162668123001" data-account="6161463677001" data-player="default" data-embed="default" class="vjs-fluid" controls="" data-application-id="" style="width: 100%; height: 100%;"&gt;&lt;/video-js&gt;&lt;/div&gt;&lt;script src="https://players.brightcove.net/6161463677001/default_default/index.min.js"&gt;&lt;/script&gt;&lt;script&gt;(function() {  var wrapper = document.getElementById('lia-vid-6162668123001w320h240r202');  var videoEl = wrapper ? wrapper.querySelector('video-js') : null;  if (videoEl) {     if (window.videojs) {       window.videojs(videoEl).ready(function() {         this.on('loadedmetadata', function() {           this.el().querySelectorAll('.vjs-load-progress div[data-start]').forEach(function(bar) {             bar.setAttribute('role', 'presentation');             bar.setAttribute('aria-hidden', 'true');           });         });       });     }  }})();&lt;/script&gt;&lt;a class="video-embed-link" href="https://community.esri.com/t5/video/gallerypage/video-id/6162668123001"&gt;(view in My Videos)&lt;/a&gt;&lt;/div&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P class=""&gt;&lt;SPAN class=""&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P class=""&gt;&lt;SPAN class=""&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="background-color: #ffffff;"&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 07 Mar 2019 21:18:46 GMT</pubDate>
      <guid>https://community.esri.com/t5/arcgis-runtime-sdk-for-ios-questions/when-driving-navigation-arrow-going-beyond-map/m-p/560541#M4833</guid>
      <dc:creator>ManasaParida</dc:creator>
      <dc:date>2019-03-07T21:18:46Z</dc:date>
    </item>
    <item>
      <title>Re: When Driving Navigation Arrow Going Beyond Map Actual Route</title>
      <link>https://community.esri.com/t5/arcgis-runtime-sdk-for-ios-questions/when-driving-navigation-arrow-going-beyond-map/m-p/560542#M4834</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi &lt;A href="https://community.esri.com/migrated-users/336354"&gt;Manasa&lt;/A&gt;.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;By default, the polyline will be turned into &lt;A href="https://developers.arcgis.com/ios/latest/api-reference/interface_a_g_s_location.html"&gt;AGSLocations&lt;/A&gt;, with one for each point in the source polyline. Remember that if&amp;nbsp;you densify a polyline, you will get the original points plus any densification results, so they might be less than &lt;STRONG&gt;maxSegmentLength&lt;/STRONG&gt; apart.‌&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Once you have called &lt;STRONG&gt;AGSSimulatedLocationDataSource.setLocationsWithPolyline&lt;/STRONG&gt;, the&amp;nbsp;&lt;STRONG&gt;AGSSimulatedLocationDataSource.&lt;/STRONG&gt;&lt;STRONG&gt;locations&lt;/STRONG&gt; array will be populated with AGSLocations. These locations will be provided to the AGSLocationDisplay at 1 location per second.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Each location in the &lt;STRONG&gt;locations&lt;/STRONG&gt; array&amp;nbsp;will initially have a velocity of -1 and a course of -1. You can modify the velocities and courses to a value &amp;gt;= 0 if need be. The &lt;STRONG&gt;AGSSimulatedLocationDataSource&lt;/STRONG&gt; will emit a location every second. If it finds a velocity &amp;lt; 0, it will use 1 meter per second. If it finds a course &amp;lt; 0, it will calculate heading&amp;nbsp;based off the direction from the previous location to the current location.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;For the GPX data, it looks like we ignore the timestamps on the GPX source points, and emit one location every second regardless of the timing of the original data points. That probably explains why it looks like it's running too fast.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 18 Mar 2019 17:29:40 GMT</pubDate>
      <guid>https://community.esri.com/t5/arcgis-runtime-sdk-for-ios-questions/when-driving-navigation-arrow-going-beyond-map/m-p/560542#M4834</guid>
      <dc:creator>Nicholas-Furness</dc:creator>
      <dc:date>2019-03-18T17:29:40Z</dc:date>
    </item>
    <item>
      <title>Re: When Driving Navigation Arrow Going Beyond Map Actual Route</title>
      <link>https://community.esri.com/t5/arcgis-runtime-sdk-for-ios-questions/when-driving-navigation-arrow-going-beyond-map/m-p/560543#M4835</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi &lt;A href="https://community.esri.com/migrated-users/2201"&gt;Nicholas Furness&lt;/A&gt;‌&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Here is my code snippets to snap the Routing Result&amp;nbsp;&lt;SPAN&gt;Manuever. But i am not able to assign snapped Point to the Runtime AGSLocation due to readOnly Property.&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P class=""&gt;@property&lt;SPAN class=""&gt; (&lt;/SPAN&gt;nullable&lt;SPAN class=""&gt;, &lt;/SPAN&gt;nonatomic&lt;SPAN class=""&gt;, &lt;/SPAN&gt;strong&lt;SPAN class=""&gt;, &lt;/SPAN&gt;readonly&lt;SPAN class=""&gt;) AGSLocation *location&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;For&amp;nbsp;the Testing purpose What i am doing here is ! For&amp;nbsp;each&amp;nbsp;&lt;/SPAN&gt;locationChangedHandler update i am passing device GPS location and&amp;nbsp;route solve result to a separate function like below code then doing some kind of iteration to find the&amp;nbsp;snapped point based on the Current GPS Location called(&lt;SPAN&gt;AGSLocation&lt;/SPAN&gt;), Then adding the new&amp;nbsp;&lt;SPAN&gt;snapped&lt;/SPAN&gt;&lt;SPAN&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;point to a Graphics Layer. But what i am expecting here is how can i assign this snapped point to the Runtime Location so that it will have a smooth transition instead of Jumping. Please see the attached Video how it's showing currently.&lt;BR /&gt;&lt;BR /&gt;Please suggest if there anything going with wrong approach.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P class=""&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;SPAN class=""&gt;func&lt;/SPAN&gt; snapedDirectionManeuverPointToRoad( routeManuevers: [&lt;SPAN class=""&gt;AGSDirectionManeuver&lt;/SPAN&gt;], deviceGPSPoint: &lt;SPAN class=""&gt;AGSPoint&lt;/SPAN&gt;) {&lt;/P&gt;&lt;P class=""&gt;&lt;SPAN class=""&gt;&lt;/SPAN&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;SPAN class=""&gt;var&lt;/SPAN&gt; sortedDictionary:[&lt;SPAN class=""&gt;Int&lt;/SPAN&gt;:&lt;SPAN class=""&gt;Double&lt;/SPAN&gt;] = [:]&lt;/P&gt;&lt;P class=""&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;SPAN class=""&gt;let&lt;/SPAN&gt; sortedKey: &lt;SPAN class=""&gt;Int&lt;/SPAN&gt;&lt;/P&gt;&lt;P class=""&gt;&lt;SPAN class=""&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN class=""&gt;self&lt;/SPAN&gt;&lt;SPAN class=""&gt;.&lt;/SPAN&gt;prepareDictionary&lt;SPAN class=""&gt; = [:]&lt;/SPAN&gt;&lt;/P&gt;&lt;P class=""&gt;&lt;SPAN class=""&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;&lt;P class=""&gt;&lt;SPAN class=""&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;// Loop through the entire route manuevers&lt;/P&gt;&lt;P class=""&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;SPAN class=""&gt;for&lt;/SPAN&gt; routeManuever &lt;SPAN class=""&gt;in&lt;/SPAN&gt; &lt;SPAN class=""&gt;0&lt;/SPAN&gt;...routeManuevers.&lt;SPAN class=""&gt;count&lt;/SPAN&gt;-&lt;SPAN class=""&gt;1&lt;/SPAN&gt; {&lt;/P&gt;&lt;P class=""&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;SPAN class=""&gt;let&lt;/SPAN&gt; maneuver = routeManuevers[routeManuever]&lt;/P&gt;&lt;P class=""&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;SPAN class=""&gt;let&lt;/SPAN&gt; nearestCoord = &lt;SPAN class=""&gt;AGSGeometryEngine&lt;/SPAN&gt;.&lt;SPAN class=""&gt;nearestCoordinate&lt;/SPAN&gt;(in: maneuver.&lt;SPAN class=""&gt;geometry&lt;/SPAN&gt;!, to: deviceGPSPoint)&lt;/P&gt;&lt;P class=""&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;SPAN class=""&gt;self&lt;/SPAN&gt;.&lt;SPAN class=""&gt;prepareDictionary&lt;/SPAN&gt;[routeManuever] = nearestCoord?.&lt;SPAN class=""&gt;distance&lt;/SPAN&gt;&lt;/P&gt;&lt;P class=""&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;}&lt;/P&gt;&lt;P class=""&gt;&lt;SPAN class=""&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;&lt;P class=""&gt;&lt;SPAN class=""&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;// Keep the original value before Sorted&lt;/P&gt;&lt;P class=""&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;sortedDictionary = &lt;SPAN class=""&gt;self&lt;/SPAN&gt;.&lt;SPAN class=""&gt;prepareDictionary&lt;/SPAN&gt;&lt;/P&gt;&lt;P class=""&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;SPAN class=""&gt;let&lt;/SPAN&gt; sortedValue = &lt;SPAN class=""&gt;self&lt;/SPAN&gt;.&lt;SPAN class=""&gt;prepareDictionary&lt;/SPAN&gt;.&lt;SPAN class=""&gt;values&lt;/SPAN&gt;.&lt;SPAN class=""&gt;sorted&lt;/SPAN&gt;()&lt;/P&gt;&lt;P class=""&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;SPAN class=""&gt;let&lt;/SPAN&gt; key = sortedDictionary.&lt;SPAN class=""&gt;filter&lt;/SPAN&gt;{$0.value == sortedValue[&lt;SPAN class=""&gt;0&lt;/SPAN&gt;]}&lt;/P&gt;&lt;P class=""&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;sortedKey = key.&lt;SPAN class=""&gt;keys&lt;/SPAN&gt;.&lt;SPAN class=""&gt;first&lt;/SPAN&gt;!&lt;/P&gt;&lt;P class=""&gt;&lt;SPAN class=""&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;&lt;P class=""&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;SPAN class=""&gt;guard&lt;/SPAN&gt; &lt;SPAN class=""&gt;let&lt;/SPAN&gt; densifyGeometry = &lt;SPAN class=""&gt;AGSGeometryEngine&lt;/SPAN&gt;.&lt;SPAN class=""&gt;densifyGeometry&lt;/SPAN&gt;(routeManuevers[sortedKey].&lt;SPAN class=""&gt;geometry&lt;/SPAN&gt;!, maxSegmentLength: &lt;SPAN class=""&gt;0.001&lt;/SPAN&gt;) &lt;SPAN class=""&gt;else&lt;/SPAN&gt; {&lt;/P&gt;&lt;P class=""&gt;&lt;SPAN class=""&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN class=""&gt;print&lt;/SPAN&gt;&lt;SPAN class=""&gt;(&lt;/SPAN&gt;"Unable to found densify result"&lt;SPAN class=""&gt;)&lt;/SPAN&gt;&lt;/P&gt;&lt;P class=""&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;SPAN class=""&gt;return&lt;/SPAN&gt;&lt;/P&gt;&lt;P class=""&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;}&lt;/P&gt;&lt;P class=""&gt;&lt;SPAN class=""&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;&lt;P class=""&gt;&lt;SPAN class=""&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;// Find the nearest Vertex from the densified route point&lt;/P&gt;&lt;P class=""&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;SPAN class=""&gt;let&lt;/SPAN&gt; nearestVertex = &lt;SPAN class=""&gt;AGSGeometryEngine&lt;/SPAN&gt;.&lt;SPAN class=""&gt;nearestVertex&lt;/SPAN&gt;(in: densifyGeometry, to: deviceGPSPoint)&lt;/P&gt;&lt;P class=""&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;SPAN class=""&gt;self&lt;/SPAN&gt;.&lt;SPAN class=""&gt;snapToRoad&lt;/SPAN&gt;(snapedPoint: nearestVertex!.&lt;SPAN class=""&gt;point&lt;/SPAN&gt;, imageSymbol: &lt;SPAN class=""&gt;AGSPictureMarkerSymbol&lt;/SPAN&gt;(image: imageLiteral(resourceName: "Course")))&lt;/P&gt;&lt;P class=""&gt;&lt;/P&gt;&lt;P class=""&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;}&lt;/P&gt;&lt;P class=""&gt;&lt;SPAN class=""&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;&lt;P class=""&gt;&lt;SPAN class=""&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;// Snapped point to show in Routing Overlay&lt;/P&gt;&lt;P class=""&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;SPAN class=""&gt;func&lt;/SPAN&gt; snapToRoad(snapedPoint:&lt;SPAN class=""&gt;AGSPoint&lt;/SPAN&gt;, imageSymbol:&lt;SPAN class=""&gt;AGSPictureMarkerSymbol&lt;/SPAN&gt;) {&lt;/P&gt;&lt;P class=""&gt;&lt;/P&gt;&lt;P class=""&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;SPAN class=""&gt;let&lt;/SPAN&gt; graphic = &lt;SPAN class=""&gt;AGSGraphic&lt;/SPAN&gt;(geometry: snapedPoint, symbol: imageSymbol, attributes: &lt;SPAN class=""&gt;nil&lt;/SPAN&gt;)&lt;/P&gt;&lt;P class=""&gt;&lt;SPAN class=""&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN class=""&gt;self&lt;/SPAN&gt;&lt;SPAN class=""&gt;.&lt;/SPAN&gt;routeNavigationSymbolOverlay&lt;SPAN class=""&gt;.&lt;/SPAN&gt;graphics&lt;SPAN class=""&gt;.&lt;/SPAN&gt;&lt;SPAN class=""&gt;removeAllObjects&lt;/SPAN&gt;&lt;SPAN class=""&gt;()&lt;/SPAN&gt;&lt;/P&gt;&lt;P class=""&gt;&lt;SPAN class=""&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN class=""&gt;self&lt;/SPAN&gt;&lt;SPAN class=""&gt;.&lt;/SPAN&gt;routeNavigationSymbolOverlay&lt;SPAN class=""&gt;.&lt;/SPAN&gt;graphics&lt;SPAN class=""&gt;.&lt;/SPAN&gt;&lt;SPAN class=""&gt;add&lt;/SPAN&gt;&lt;SPAN class=""&gt;(graphic)&lt;/SPAN&gt;&lt;/P&gt;&lt;P class=""&gt;&lt;SPAN class=""&gt;}&lt;/SPAN&gt;&lt;/P&gt;&lt;P class=""&gt;&lt;SPAN class=""&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P class=""&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;div class="lia-vid-container video-embed-center"&gt;&lt;div id="lia-vid-6162679404001w320h240r577" class="lia-video-brightcove-player-container"&gt;&lt;video-js data-video-id="6162679404001" data-account="6161463677001" data-player="default" data-embed="default" class="vjs-fluid" controls="" data-application-id="" style="width: 100%; height: 100%;"&gt;&lt;/video-js&gt;&lt;/div&gt;&lt;script src="https://players.brightcove.net/6161463677001/default_default/index.min.js"&gt;&lt;/script&gt;&lt;script&gt;(function() {  var wrapper = document.getElementById('lia-vid-6162679404001w320h240r577');  var videoEl = wrapper ? wrapper.querySelector('video-js') : null;  if (videoEl) {     if (window.videojs) {       window.videojs(videoEl).ready(function() {         this.on('loadedmetadata', function() {           this.el().querySelectorAll('.vjs-load-progress div[data-start]').forEach(function(bar) {             bar.setAttribute('role', 'presentation');             bar.setAttribute('aria-hidden', 'true');           });         });       });     }  }})();&lt;/script&gt;&lt;a class="video-embed-link" href="https://community.esri.com/t5/video/gallerypage/video-id/6162679404001"&gt;(view in My Videos)&lt;/a&gt;&lt;/div&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 17 Apr 2019 13:36:54 GMT</pubDate>
      <guid>https://community.esri.com/t5/arcgis-runtime-sdk-for-ios-questions/when-driving-navigation-arrow-going-beyond-map/m-p/560543#M4835</guid>
      <dc:creator>ManasaParida</dc:creator>
      <dc:date>2019-04-17T13:36:54Z</dc:date>
    </item>
    <item>
      <title>Re: When Driving Navigation Arrow Going Beyond Map Actual Route</title>
      <link>https://community.esri.com/t5/arcgis-runtime-sdk-for-ios-questions/when-driving-navigation-arrow-going-beyond-map/m-p/560544#M4836</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi &lt;A href="https://community.esri.com/migrated-users/336354"&gt;Manasa&lt;/A&gt;. You're really close. You should just need to encapsulate your snap-to-road logic within a custom &lt;A href="https://developers.arcgis.com/ios/latest/api-reference/category_a_g_s_location_data_source_07_for_subclass_eyes_only_08.html"&gt;&lt;STRONG&gt;AGSLocationDataSource&lt;/STRONG&gt;&lt;/A&gt;. When the mapview is provided new locations from that data source, it'll take care of smoothing interpolating between them.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I am pulling together a sample project and blog post to demonstrate this which I'll be sharing shortly.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 26 Apr 2019 11:08:29 GMT</pubDate>
      <guid>https://community.esri.com/t5/arcgis-runtime-sdk-for-ios-questions/when-driving-navigation-arrow-going-beyond-map/m-p/560544#M4836</guid>
      <dc:creator>Nicholas-Furness</dc:creator>
      <dc:date>2019-04-26T11:08:29Z</dc:date>
    </item>
    <item>
      <title>Re: When Driving Navigation Arrow Going Beyond Map Actual Route</title>
      <link>https://community.esri.com/t5/arcgis-runtime-sdk-for-ios-questions/when-driving-navigation-arrow-going-beyond-map/m-p/560545#M4837</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;&lt;STRONG&gt;Hi @Manasa Parida&amp;nbsp;&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;we need to integrate in our application route always face up and map moving as user along the route.&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;I&amp;nbsp;have looked your screen recording video and I want the same thing to happen in my app also i.e the&amp;nbsp;&lt;STRONG&gt;map is moving when the user is moving&lt;/STRONG&gt;. I am sharing a code snippet down please have a look. I am not able to achieve the same. Any help will be highly appreciated. Thanks in advance.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;BLOCKQUOTE class="jive_macro_quote jive-quote jive_text_macro"&gt;&lt;P class=""&gt;&lt;SPAN class=""&gt;&lt;STRONG&gt;override&lt;/STRONG&gt;&lt;/SPAN&gt; &lt;SPAN class=""&gt;&lt;STRONG&gt;func&lt;/STRONG&gt;&lt;/SPAN&gt; viewDidLoad() {&lt;/P&gt;&lt;P class=""&gt;&lt;SPAN class=""&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN class=""&gt;&lt;STRONG&gt;super&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;SPAN class=""&gt;.&lt;/SPAN&gt;viewDidLoad&lt;SPAN class=""&gt;()&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;&lt;P class=""&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;locationDisplay&lt;SPAN class=""&gt; = &lt;/SPAN&gt;&lt;SPAN class=""&gt;&lt;STRONG&gt;self&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;SPAN class=""&gt;.&lt;/SPAN&gt;mapView&lt;SPAN class=""&gt;.&lt;/SPAN&gt;locationDisplay&lt;/P&gt;&lt;P class=""&gt;&lt;SPAN class=""&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;locationDisplay&lt;SPAN class=""&gt;.&lt;/SPAN&gt;autoPanMode&lt;SPAN class=""&gt; = &lt;/SPAN&gt;AGSLocationDisplayAutoPanMode&lt;SPAN class=""&gt;.&lt;/SPAN&gt;&lt;SPAN class=""&gt;navigation&lt;/SPAN&gt;&lt;/P&gt;&lt;P class=""&gt;&lt;SPAN class=""&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;locationDisplay&lt;SPAN class=""&gt;.&lt;/SPAN&gt;navigationPointHeightFactor&lt;SPAN class=""&gt; = &lt;/SPAN&gt;&lt;SPAN class=""&gt;0.5&lt;/SPAN&gt;&lt;/P&gt;&lt;P class=""&gt;&lt;SPAN class=""&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;locationDisplay&lt;SPAN class=""&gt;.&lt;/SPAN&gt;showAccuracy&lt;SPAN class=""&gt; = &lt;/SPAN&gt;&lt;SPAN class=""&gt;&lt;STRONG&gt;true&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P class=""&gt;&lt;SPAN class=""&gt;&lt;STRONG&gt;}&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 16 May 2019 11:34:16 GMT</pubDate>
      <guid>https://community.esri.com/t5/arcgis-runtime-sdk-for-ios-questions/when-driving-navigation-arrow-going-beyond-map/m-p/560545#M4837</guid>
      <dc:creator>tejveer</dc:creator>
      <dc:date>2019-05-16T11:34:16Z</dc:date>
    </item>
    <item>
      <title>Re: When Driving Navigation Arrow Going Beyond Map Actual Route</title>
      <link>https://community.esri.com/t5/arcgis-runtime-sdk-for-ios-questions/when-driving-navigation-arrow-going-beyond-map/m-p/560546#M4838</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;@&lt;A _jive_internal="true" class="" data-userid="349595" data-username="chetutej" href="https://community.esri.com/people/chetutej" style="color: #3778c7; background-color: #ffffff; border: 0px; font-weight: 200; text-decoration: underline; font-size: 1.286rem;"&gt;tej veer&lt;/A&gt;&amp;nbsp;, Hi sorry for the delayed reply,&lt;/P&gt;&lt;P&gt;could you please write me back what exactly you are looking for so that I can try my best to suggest you to achieve!! what you are looking out.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 24 Jun 2019 09:12:39 GMT</pubDate>
      <guid>https://community.esri.com/t5/arcgis-runtime-sdk-for-ios-questions/when-driving-navigation-arrow-going-beyond-map/m-p/560546#M4838</guid>
      <dc:creator>ManasaParida</dc:creator>
      <dc:date>2019-06-24T09:12:39Z</dc:date>
    </item>
  </channel>
</rss>

