Links to the API Reference can be found here
- Map: Fix crash in heightmap calculation
- Routing: Fix endless recompute if there's faraway traffic
- Android: Fix MapView state serialization and deserialization
- Core: Fix crash when parsing invalid JSON in downloader
- Map: Add more precise synchronization and state checking to height map cells processing
- Map: Calculate font size for an unscaled extent of a traffic sign label
- Map: Fix crash caused by data race in loading of roads in asynchronous threads
- Map: Stabilize visibility of logistic signs using visibility time ordering and rectangle size hysteresis
- Navigation: Correctly count side roads on left or right to instruction
- Navigation: Fix broken route object in notification caused by thread race
- Navigation: Fix duplicate exit highway instructions
- Routing: Call online routing with correct compute type
- Routing: Recompute multiple route parts if needed due to traffic closures
- Routing: Terminate EV compute if no station is reachable
- Traffic: Don't read the same road tiles multiple times when parsing OpenLR tile
- Android: Fix crash when using EV consumption curve on Android API 30+
Android: Fix TTS engine being deinitialized forever
Fixed a rare occasion in which TTSAndroid would throw
iOS: Fix empty result of SYRouting computeRouteDurations
computeRouteDurationsnow works properly and returns a full list of requested times.
iOS: Fix rare crash in getRouteProgress
- Map: Allow to change 2D/3D view in autozoom junction approach
Map: Fix unnecessary addition of daylight saving time
When calculating a route multiple times and using different overridden start times, the daylight saving time would be added even in the cases where it was not applicable.
Navigation: Add missing instruction on bifurcations
- Navigation: Fix duplicate danger turn warnings
- Navigation: Fix incorrect exit instruction in a roundabout
- Navigation: Fix other instruction issues
- Places: Handle http client errors in custom places install
- Places: Upgrade custom places database with handle column missing
Routing: Do not fetch traffic around every waypoint
When computing a route, only the traffic around the starting point will be taken into account by the routing engine as it is probable that traffic events that are far away (not including closures) will be gone by the time the driver reaches the place.
Routing: Pass direction of arrival to SRL
From now on, the side on which the destination point is located will be taken into account when computing a route. Therefore, if possible, the destination will always be reached in the driving direction.
Android: Add a listener to receive search indexing operation callbacks
It is now possible to register a listener which informs you about the on-device indexing of imported/downloaded Custom Places. This is important so that the integrator knows when the Custom Places search is available.
CustomPlacesSearchIndexingListenerthat can be added to the manager like this:
CustomPlacesManagerProvider.getInstance().get().addSearchIndexingListener(yourListenerObject)This listener returns
onStarted()when a change is made to the Custom Places database. When the indexing is finished, either
onError()callbacks will be called. Note that the callbacks are called for the indexing operation as a whole, so you may receive the callbacks either once (for example when importing more than one bigger JSON, the indexing will most probably take more than importing) or more times (when the indexing operation finishes sooner than the next batch of Custom Places is imported).
Android: Update Compile SDK version and target SDK version 33. Gradle Plugin 7.4.0. Gradle wrapper 7.6.
Android: Update dependencies to newer versions
Due to several CVE vulnerabilities, we have decided to update most of our project's dependencies. The most notable is: Kotlin 1.5.32 -> 1.7.21.
If you are using
com.google.android.gms:play-services-location:versionin your app, it is necessary that you update this dependency to version 21.0.1 or higher. There has been a breaking change in the library. Using an older version of the library will cause a crash of the application.
SYCustomPlacesManagerDelegatewith callbacks for start/finish indexing
It is now possible to register a delegate which informs you about the on-device indexing of imported/downloaded Custom Places. This is important so that the integrator knows when the Custom Places search is available.
Create a new object or add the new
SYCustomPlacesManagerDelegateto an existing object. This delegate implements two new callbacks
customPlacesManager(manager, didFinishCreatingSearchIndexWithError). To use it, assign the object to the delegate:
SYCustomPlacesManager.shared().delegate = theObject. It is necessary to hold the reference to the object as the manager only hold it as a weak reference.
Note that the callbacks are called for the indexing operation as a whole, so you may receive the callbacks either once (for example when importing more than one bigger JSON, the indexing will most probably take more than importing) or more times (when the indexing operation finishes sooner than the next batch of Custom Places is imported).
iOS: Add turn preference setting to
You can now choose/let the user choose whether it is preferred to use right turns (left turns in UK, Australia) or turns that cross the crossroads. More information here
In Android, this feature is available since SDK 21.4.0.
Map: Do not draw disputed borders from WCL by default
When using certain versions of WCL, disputed borders of countries can be drawn on the map. However, this should only be enabled on demand. Should you need to enable this feature, please contact us.
Navigation: Add new Ukrainian TTS commands
Routing: Return specific error when map is not available
When using offline mode and trying to compute a route to GeoCoordinates that are located in a place where offline maps are not downloaded, an error
MapNotAvailablewill be thrown.
Search: Add option to get local time in country based on position and utc time
Added a new feature using which it is possible to retrieve the time zone of a location in order to be able to calculate ETA if the destination is in a different time zone.