27.0¶
Links to the API Reference can be found here
27.0.2 (2024-10-18)¶
Bug Fixes¶
- Android: Fix playing audio instructions
- Android: Make NativeMethodsReceiver class thread-safe
- Android: Use properly included newest version of jjwt library
- Core: Fix updating country split maps
- iOS: Reuse image memory when map markers refer to the same image instance
- Map: Prevent crash by checking shader uniforms count
- Map: Render closed roads differently if closed for all vehicles or for trucks
- Navigation: Improve routing and navigation capabilities by resolving also composite restrictions in logistic attributes
- Routing: Do not access front of a possibly empty vector
- Routing: Do not create turn instruction for wider turn angle interval on two roads only
- Routing: Fix ETA for Car
- Routing: Fix resolving type of junction on curved or complex junctions
- Routing: Lower speed limit instead speed from category to be closer to reality
- Traffic: Fix traffic rendering on the route
27.0.1 (2024-09-25)¶
Bug Fixes¶
- Map: Evaluate logistic restriction "Direction in time"
- Map: Use preferred LOD for route segments calculation and clear route geometry manager when traffic on route has changed
- Navigation: Read road data for VehicleZoneAnalyzer on worker thread
27.0.0 (2024-09-24)¶
Bug Fixes¶
-
Android: Fix active notifications in navigation manager
This fixes a bug introduced in SDK26 which caused notifications to stop working after adding two or more active listeners.
-
Android: Fix continuation search for categories
Properly fill continuation token when using online category search.
-
Android: Fix crashes when converting non-UTF character stream to jstring
- Android: Fix playing audio when audio focus was already lost
-
Core: Disconnect signals in FacadeImpl destructor before receiving
OnMapChanged
signal to destructed objectFixes a crash.
-
iOS: Correctly register
SYNavigationObserver
after allocationThis change fixes proper registration of Navigation observers so that notifications work.
-
iOS: Fill
SYTask.statusInfo
in case of error inSYVoiceCataog.getAvailableVoicePackages
Properly fill in error information if requesting available voice packages fails.
-
iOS: Fix 'unsupported Swift architecture' build error for x86_64 simulator architecture
- iOS: Fix random deadlock in Dispatcher thread after
SYAudioManager
stopOutputAndClearQueue
during recorded voice playback -
Map: Correctly show danger turn arrows on second map view
This fixes a bug where danger turn arrows would be shown in the opposite direction if they were to be shown in any other than the first created
MapView
. -
Map: Do not draw irrelevant logistic markers along route
We have now introduced a filtering algorithm that will hide irrelevant restriction markers along the computed route while navigating.
-
Map: Fix memory leak in address points data per view
- Map: Fix memory leaks in map reader file chunk cache
- Map: Handle extreme values of camera rotation to avoid black map
- Map: Make BreadCrumbs data manipulation non-blocking
- Map: Make SetUnits function asynchronous to alleviate Dispatcher thread
- Map: Retrieve composite dimensional restrictions from logistic info
- Map: Validate invalid road offsets to prevent crashes
-
Navigation: Add timeout for retrieving online incidents
It would sometimes happen that requesting online incidents for a long route would take longer than usual, mostly beacuse of poor internet connection. If this happened, not even the offline incidents such as speed cameras from the offline database would not be returned. We have now fixed this.
-
Navigation: Always say instruction after passing the waypoint
In some cases, when the waypoint was placed in a place where the engine that generates instructions also generated a lot of other instructions such as turns or roundabouts, the waypoint notification would not be told. This has now been fixed.
-
Navigation: Change "linke/rechte" to "linken/rechten " in German TTS voice
- Navigation: Change "Natychmiast" to "Następnie" in Polish TTS voice
- Navigation: Correctly adapt map speed limit to max vehicle speed
-
Navigation: Discard recomputes based on old navigation route
There may be a scenario where a user is navigating along a route 1 and deviates from it. That action triggers a recompute for route 1. Say the route is long and recompute takes a long time. Meanwhile, the user cancels the route and computes a new, shorter route 2 while the route 1 is still being recomputed. The route 2 is set for navigation, just until route 1 is done being recomputed and will override route 2. This has now been fixed and recomputes will be discarded in case the route is no longer an active navigation route.
-
Navigation: Fix calculating
tunnelLengthToFinish
in Direction analyzerIf there was an direction inside of a tunnel (for example a waypoint), the isInTunnel parameter of the direction would be false when approaching the direction. This has now been fixed.
-
Navigation: Fix cyclic dependencies in navigation analyzers causing too high memory usage
- Navigation: Fix detection if road is open for some logistic attribute combinations
- Navigation: Fix detection of short dead end roads
- Navigation: Fix false warning of opposite directions on roundabouts
- Navigation: Fix repeating hazmat warnings
- Navigation: Fix resolving speed limit for danger turns in free drive mode
- Navigation: Fix starting position updating while positioning was already started before setting new position source
- Navigation: Read dimensional restrictions also for cars on Tomtom maps
- Navigation: Show vehicle aid warnings only for roads with same direction as current trajectory
- Online: Fix crash with duplicate downloads while attaching saved downloads
- Places: Fix handling of custom places installation with empty list of custom categories
- Places: Properly handle error case while reading name of custom place
- Routing: Do not use traffic for guided routes and always use partial recompute
- Routing: Emit delivery zone warnings strictly for trucks
- Routing: Evaluate prohibited entry for truck
- Routing: Filter duplicate charging stations
- Routing: Fix crash in colors for direction
- Routing: Fix filling of road numbers when next road is internal or ramp
- Routing: Fix negative charging duration
- Routing: Fix wrong ETA for pedestrian routing
- Routing: Process less traffic data during NAP calculation
- Routing: Provider setting no longer breaks EV station search
- Routing: Remove duplicate low battery warning from route summary
- Routing: Remove POIs from EV algorithm which are mapped on closed roads
-
Routing: Remove road limit from isochrones
When calculating EV range, there was a limit on how many roads can be taken into account so that we do not use all the resources available on the device. This, howewer, has limited the EV range calculation so this limit was removed.
-
Routing: Set waypoint passed flag to routeplan to correctly store route plan after recompute
- Search: Set entry point in custom place result
- Search: Prevent search from failing due to error in POI reader
- Traffic: Correctly lock TrafficOnRoute structures to avoid race condition
Features¶
-
Android: Add
createRouteRequestFromJSONString
into Router class.createRouteRequestFromJSONString
in RouteRequest was deprecatedPlease use the new method from Router as the static one from RouteRequest may have caused crashes as it could be called even without an initialized SygicMapsSDK engine.
-
Android: Cancelling interface for explorer functions
It is now possible to create tasks from explorer functions and cancel them.
-
Android: Injectable downloader
When initializing the SDK, it is now possible to insert a custom-defined downloader to override our implementation of the system downloader which takes care of downloading offline maps and voices.
-
Android: Move
openGpsConnection()
from SygicEngine toPositionManager
- Android: Remove Tracking interface
- Android: Rename DistanceUnits.MilesFeets to MilesFeet
- Android: Rewrite audio manager to Kotlin, effectively using Kotlin enums instead of IntDefs
- Android: Rewrite Navigation event notifications to kotlin, effectively using enums instead of IntDefs
- Android: Rewrite Navigation manager to kotlin, effectively using enums instead of IntDefs
- Android: Rewrite OperationStatus to Kotlin, effectively using Kotlin enum instead of IntDefs
- Android: Rewrite SygicContext to Kotlin and remove deprecated init with individuals parameters
- Android: Update Gradle to 8.9, AGP to 8.5.1, Kotlin to 1.9.24, Java to 17, to mitigate vulnerabilities
- Android: Use Kotlin defined way to parcelize enums
- iOS: Add error code
SYMapInstallerResultMapsOutOfSync
- iOS: Add
kingpinToRearAxleLength
andmaxWheels
toSYMapTrafficSignSettingsType
- iOS: Improve cancelling for
SYRouteExplorer
andSYLocationExplorer
operations - iOS: Rename SYAudioDistanceUnitsMilesFeets to SYAudioDistanceUnitsMilesFeet
- Navigation: Add ability to enable premium incidents
-
Navigation: Correctly notify cumulative data in Explore charging stations function
The function explore charging stations on route was the only one that did not report cumulative outputs in callbacks. This has been changed so that its behavior is on par with other explorer functions.
-
Routing: Add additional routing errors
RoadLimitReached
andLowMemory
- Routing: Add routing settings validation
-
Routing: Allow disabling automatic adding of EV chargers
In some use cases, the user may want to select all the charging waypoints manually. While this can be simulated by adding the chargers as waypoints to a regular route, the user would not get state of charge with which the chargers are reached. Instead, the option to use EV routing without adding charging stations automatically was added. There are no optimizations - at each manually chosen charging station, the vehicle will be considered charged to the desired state of charge if provided, and fully otherwise.
BREAKING CHANGES¶
-
iOS: Removed methods of SYLocationExplorer
exploreChargingStationsAtLocation
(version with vehicleProfile and version with route parameter), they were replaced with exploreChargingStationsAtLocation:options:completion:If SYTask (from SYRouteExplorer or SYLocationExplorer) is cancelled, completion will be called with ‘cancelled’ error code. Before this update, the completion was not called in case of cancel.
-
iOS:
SYAudioDistanceUnitsMilesFeets
was renamed toSYAudioDistanceUnitsMilesFeet
- Navigation: All platforms: Callback funcion of
RouteExplorer.exploreChargingStationsOnRoute()
now returns complete set of found EV-stations and not only new ones. -
Android: All explore functions now return
Task
.Task that is returned from MapInstaller functions now is in different package (same as explore functions Task)
-
Android:
Distance.MilesFeets
was renamed toMilesFeet
- Android: Enums are parcelized by language defined way, instead of custom parcelization method
-
Android: To mitigate vulnerabilities, we have updated these parts of the library:
Updated Java version from 8 to 17
Updated Gradle Wrapper from 7.6 to 8.9
Updated Gradle Plugin version from 7.4.0 to 8.5.1
Updated Kotlin version from 1.7.21 to 1.9.24
Updated compileSdkVersion from 33 to 34
These updates may require changes in your build environment and dependencies.
-
Android: Tracking interface has beed removed as it is not needed anymore, without any replacement.
- Android: Method
openGpsConnection()
was moved from SygicEngine into more suitable class PositionManager. -
Android:
SygicEngine.init()
with individual parameters was deleted, replace it with init consuming SygicContextInitRequestAlso,
OnInit
callback forSygicEngine.init()
was changed from optional to mandatory. -
Android: Removed NetworkSettings class and support. Network management is no longer supported by SDK and should be handled by integration application
- Android: RouteEventNotification classed rewritten in Kotlin, effectively replacing their IntDefs with Kotlin enums
- Android: Navigation Manager rewritten in Kotlin, effectively replacing Navigation and Traffic IntDefs with Kotlin enums
- Android: AudioManager now contains enums instead of IntDefs. AudioSettings contains some renamed settings.
-
Routing: New compute results were added to iOS and Android interfaces. Due to invalid settings, routing may now fail in some cases where it previously succeeded.
This can happen when calling EV Compute or Economic type of compute without a consumption curve, as these two types of compute rely on the curve and might produce unwanted results otherwise.