Skip to content

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 a OnRouteRecompute 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 a Reason parameter.

  • Android: Add route to recompute progress notification callback

    The OnRouteRecompute listener now also has a route 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 a OnRouteRecompute 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 a Reason 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 a SYNavigationObserver 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 a Reason 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. Use serializeToBriefJSON() function instead if you want to store user routes.
    • iOS: SYRouteSerializerFull has been removed from iOS interface. Use SYRouteSerializerBrief instead if you want to store user routes.
  • iOS: Unused SYCustomPlacesCategoriesErrorDomain was removed.
  • iOS: Renamed NSEVErrorDomain to SYEVErrorDomain, NSEVError to SYEVError, NSTrafficErrorDomain to SYTrafficErrorDomain, NSTrafficError to SYTrafficError, NSReverseSearchErrorDomain to SYReverseSearchErrorDomain.
  • iOS: SYNavigationObserver's method didUpdateRecomputeProgress: was replaced with new methods didStartRecompute:, didUpdateRecomputeProgress: and didFinishRecompute:

    • didStartRecompute has two arguments: route and recompute reason
    • didUpdateRecomputeProgress has two arguments : route and recompute progress
    • didFinishRecompute 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 with OnRouteRecompute listener with separate methods for start, progress and finished recompute

    • RecomputeStartedData has two arguments: route and recompute reason
    • RecomputeProgressData has two arguments : route and recompute progress
    • RecomputeFinishedData 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 the RecomputeStarted 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, SYLaneTypeVariableDriving

      Where:

      • 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.
  • Routing: Added new routing errors: LargeGapInPolyline for android and SYRoutingResultLargeGapInPolyline for ios

    • These new errors are tied to the Guided route compute type, further specifying the error, which was until now marked as PathConstructFailed and SYRoutingResultPathConstructFailed, 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.
  • Android: Parameter permanentId changed to nullable

    Parameter 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.