There are several delegate methods that return SKStreetType, but only when the navigation has already started.
I need to check if the user is on a highway or not, and based on that to offer several different options, that will result in navigation, but to different POIs regarding the street type.
So, is it possible to fetch street type user is currently on, when the app starts and map initialises, without starting actual navigation?
Only way I see around this, If it is not possible. is shooting up some loading screen for the user, and then starting up a navigation from current user's location up towards wherever, and when the navigation starts, quickly grabbing the Street info, stopping navigation and hiding the loading screen... But that's just wasting several seconds of user's time. I really hope I don't have to do it
This information is available only during navigation, but you don't need a "route" to to start navigation - you can start navigation in "free drive" mode (navigation without a specific route) and you will get almost all the data you would get during a normal navigation experience minus the advices (as there is no route)
Something like:
[SKRoutingService sharedInstance].mainRouteId = 0; //clear the route before starting navigation
[[SKRoutingService sharedInstance] clearCurrentRoutes];
[[SKRoutingService sharedInstance] startNavigationWithSettings:_navigationSettings]; //in navigation settings you have to define your "nav settings" (distance mode, transport mode, if you want to simulate a navigation or just use real position updates, etc.)
Note: the location manager also needs to be active (to get position updates)