28.0¶
Links to the API Reference can be found here
28.0.1 (2025-03-18)¶
Bug Fixes¶
-
Map: Render vehicle and load roads even before heightmap data are ready
This change makes rendering of the map faster by making some operations parallel.
-
Map: Select closest route from nearby alternatives after tap on map
- Navigation: Fix crash in street change analyzer
- Navigation: Fix evaluation of undefined trailer type for logistic restrictions
- Navigation: Fix multiple identical warnings on route
-
Places: Fix moving of DestroyContext object to lambda
It would sometimes happen that the function that loads place's information would be stuck and not return anything. This has now been fixed.
-
Routing: Dont say instruction on straight road
- Routing: Fix crash when recomputing pedestrian route
- Routing: Make ETA rely solely on speed profiles
- Routing: Rework EV charging station ranking
- Routing: Say instruction on exit from non highway road
28.0.0 (2025-02-28)¶
Bug Fixes¶
- Audio: Say direction immediately after setting navigation route
- Core: Correct vehicle zone warnings for online route
-
Map: Add limited capabilities for certain Adreno GPUs
The app would crash when using navigation mode on certain devices (mostly Samsung ones).
-
Map: Added bothway attribute to incident parsing
-
Map: Fix visibility of places after MapView reloading
After setting the visible categories through
PlacesManager
and reloading the map, the skin would be reset and the visible categories reset to default, too. This has now been fixed. -
Map: Improve displaying of online route with traffic
Fixed graphical artifacts that could have been visible.
-
Navigation: Fix handling of road lanes connectivity with invalid road data
- Routing: Do not report emission zones for electric vehicle
Features¶
-
Android: Add recompute reason into recompute started listener method
Instead of
OnRouteRecomputeProgressListener
, there is now aOnRouteRecompute
listener with three different callbacks that notify about start, progress and end of recompute. The listener that notifies about the start of recompute now has aReason
parameter. -
Android: Add route to recompute progress notification callback
The
OnRouteRecompute
listener now also has aroute
paramater so that it is clear for which route the recompute was triggered. -
Android: Deprecate Individual places functionality
- Android: Return null permanent ID when voice entry is not installed
-
Android: Split original position to place and entry position
Address points or POIs have their original (place) positions - that's where they are positioned in real life. These objects can also have an "entry" point which is a position on the road through which the point is accessible.
-
Android: Split recompute progress callback to dedicated methods for start, progress and finished
Instead of
OnRouteRecomputeProgressListener
, there is now aOnRouteRecompute
listener with three different callbacks that notify about start, progress and end of recompute. The listener that notifies about the start of recompute now has aReason
parameter. -
iOS: Add entry position into Waypoint and ChargingWaypoint
Address points or POIs have their original (place) positions - that's where they are positioned in real life. These objects can also have an "entry" point which is a position on the road through which the point is accessible.
-
iOS: Add recompute reason and route into recompute progress listener method
-
iOS: Split recompute progress callback to dedicated methods for start, progress and finished
Instead of
didUpdateRecomputeProgress
, there is now aSYNavigationObserver
listener with three different callbacks that notify about start, progress and end of recompute. The listener that notifies about the start of recompute now has aReason
parameter. -
iOS: Deprecate Individual places functionality
- iOS: Make map nullable in
SYMapInstaller detectCurrentCountry
callback - iOS: Remove unused
SYCustomPlacesCategoriesErrorDomain
- iOS: Rename error domains with prefix NS to have prefix SY
- Navigation: Support of new lane types
- Navigation: Update route dynamic warnings with scout analyzer
- Navigation: Vehicle aid analyzer works now with online route restrictions
- Navigation: Vehicle zone analyzer works now with online route restrictions
- Position: Snap vehicle on current or visited part only
- Routing: Add special
LargeGapInPolyline
routing error type for gap in gpx - Routing: Refresh EV warnings on route after recompute
- Routing: Remove full route json serialization
BREAKING CHANGES¶
- Routing: Removed unused full serialization of route from interfaces. Developers didn't use this function
so probably no action is needed to adapt. Full serialized route didn't need compute but it was dependent on
the map and therefore after map update deserialization failed. The best approach is to store brief route
(only route plan) and compute the route each time after deserialization.
- Android:
serializeToFullJSON()
method has been removed from android interface. UseserializeToBriefJSON()
function instead if you want to store user routes. - iOS:
SYRouteSerializerFull
has been removed from iOS interface. UseSYRouteSerializerBrief
instead if you want to store user routes.
- Android:
- iOS: Unused
SYCustomPlacesCategoriesErrorDomain
was removed. - iOS: Renamed
NSEVErrorDomain
toSYEVErrorDomain
,NSEVError
toSYEVError
,NSTrafficErrorDomain
toSYTrafficErrorDomain
,NSTrafficError
toSYTrafficError
,NSReverseSearchErrorDomain
toSYReverseSearchErrorDomain
. -
iOS: SYNavigationObserver's method
didUpdateRecomputeProgress
: was replaced with new methodsdidStartRecompute:
,didUpdateRecomputeProgress:
anddidFinishRecompute
:didStartRecompute
has two arguments: route and recompute reasondidUpdateRecomputeProgress
has two arguments : route and recompute progressdidFinishRecompute
has two arguments: route and recompute result
The route parameter in all of them is the original navigation route, from which recompute is started, due to one of these possible reasons: traffic change, vehicle of out route, waypoint skipped or language changed. This reason is provided in the didStartRecompute: delegate method. The route parameter in all of the three delegate recompute methods could be used as an identifier for single recompute process.
Recompute result could be Success or an Error which has two possible reasons for now:
- failed - recompute could not been finished, due to missing data or similar issue
- cancelled - recompute was cancelled, due to e.g. navigation route was changed during recompute process.
-
Android: Navigation listener
OnRouteRecomputeProgressListener
was replaced withOnRouteRecompute
listener with separate methods for start, progress and finished recomputeRecomputeStartedData
has two arguments: route and recompute reasonRecomputeProgressData
has two arguments : route and recompute progressRecomputeFinishedData
has two arguments: route and recompute result
The route parameter in all recompute listener data classes is the original navigation route, from which recompute is started, due to one of these possible reasons: traffic change, vehicle of out route, waypoint skipped or language changed.
This reason is provided in
RecomputeStartedData
received in theRecomputeStarted
callback.Route
parameter in all three recompute listener data classes could be used as an identifier for single recompute process.Recompute result could be Success or an Error which has two possible reasons for now:
- failed - recompute could not been finished, due to missing data or similar issue
- cancelled - recompute was cancelled, due to e.g. navigation route was changed during recompute process
-
iOS: Map iso became nullable in completion of
SYMapInstaller.detectCurrentCountry
. -
Navigation: Added support of specialized road lane types:
- Android:
LaneInfo.Type
extended by: Turn, CenterTurn, Slow, Express, PassingOvertaking, Reversible, RegulatedAccess, VariableDriving -
iOS:
SYLaneType
extended by: SYLaneTypeTurn, SYLaneTypeCenterTurn, SYLaneTypeSlow, SYLaneTypeExpress, SYLaneTypePassingOvertaking, SYLaneTypeReversible, SYLaneTypeRegulatedAccess, SYLaneTypeVariableDrivingWhere:
- Turn lane is a dedicated lane that is used for making a turn in order not to disrupt ongoing traffic.
- Center Turn lane is a bidirectional turn lane located in the middle of a road that allows traffic in both directions to turn left (right for left side driving countries).
- Slow lane, e.g., truck lane (U.S.), also known as crawler lane (Great Britain), is a lane on long and/or steep uphill/downhill stretches of high-speed roads that is designated to facilitate slow traffic.
- An Express lane is a lane of a road that is used for faster moving traffic and has fewer accesses to exits/off ramps
- A Passing lane is a lane that can occur on steep mountain grades or other roads where overtaking needs to be regulated for safety. They are used to safely pass slow moving vehicles.
- A Reversible lane is lane element that is fully reversible, i.e., traffic changes direction for a specific time frame. For example, direction is northbound in the morning, then reversed to be southbound in the evening.
- A Regulated access lane is a lane designated as a holding zone, used to regulate traffic using time intervals. Variable driving lanes are lanes added to a road that open and close to accommodate traffic volume and flow using variable indicators.
- Android:
-
Routing: Added new routing errors:
LargeGapInPolyline
for android andSYRoutingResultLargeGapInPolyline
for ios- These new errors are tied to the Guided route compute type, further specifying the error, which was until now
marked as
PathConstructFailed
andSYRoutingResultPathConstructFailed
, respectively. - An error is returned when provided polyline for guided route compute probably had too large gaps between the points and the matched route was not continous and had gaps greater than 1km. In that case, the provided polyline is not correctly generated or is not created from gps log. Consider to use polyline points as waypoints instead.
- These new errors are tied to the Guided route compute type, further specifying the error, which was until now
marked as
-
Android: Parameter
permanentId
changed to nullableParameter changed to nullable state (as it was before) because permamentId could be provided only for installed or system voice packages. For other available packages, this parameter will be provided as null.