Release Notes

We are pleased to announce the availability of version 4.4.2.0 (Lite Edition) of the new HERE SDK for iOS.

This is a stable release. We are constantly working on new features, stabilizing APIs, improving our KPIs, and evaluating your feedback.

Changes

This section documents major changes to this release that may require you to update your applications.

Version 4.4.2.0

New Features

  • Added Place.geoCoordinates to get the GeoCoordinates of a Place. Note that only Place instances retrieved from a Suggestion result may not contain geographic coordinates, hence the returned value is optional.
  • Added departure/arrival information to the Section of a Route:
    • Added Departure class with the following fields:
      • waypointIndex
      • originalCoordinates
      • mapMatchedCoordinates
    • Added Arrival class with the following fields:
      • waypointIndex
      • originalCoordinates
      • mapMatchedCoordinates
    • Added Section.departure property.
    • Added Section.arrival property.
  • Added Suggestion.type to get the new SuggestionType enum that indicates whether this Suggestion is a place, a chain like a store, restaurant or bussiness chain - or a category.

Deprecated

  • Deprecated Place.coordinates, use Place.geoCoordinates instead. Note that only Place instances retrieved from a Suggestion result may not contain geographic coordinates, hence the returned value has become optional.

Resolved Issues

  • Fixed: When the Route used to search along the route is too long, now a proper error is returned with SearchError.ROUTE_TOO_LONG.
  • Fixed: For places that are obtained from the Suggestion class, the geographic coordinates always contain a latitude and a longitude equal to 0. An additional places request is needed to obtain the coordinates.

Known Issues

  • SearchEngine: Place.getId() is empty for reverse geocoding results.
  • Map gestures can be slow when there's no internet connection and the map is using cached map data.

Changes from Previous Releases

This section documents major changes from past releases. We encourage you to use the latest release, 4.4.2.0.

Version 4.4.1.0

New Features

  • Traffic flows can now be identified along a Route. Introduced TrafficSpeeds class to provide traffic speed information over a Section polyline. The Section.trafficSpeeds property returns an array of TrafficSpeeds's which covers the Section polyline.
  • Added SearchError.queryTooLong and SearchError.filterTooLong. These errors will appear if the search query or search filter is too long (over 300 characters).
  • Added Route.transportMode which returns the original TransportMode as requested for the route calculation.

Known Issues

  • SearchEngine: Place.getId() is empty for reverse geocoding results.
  • Map gestures can be slow when there's no internet connection and the map is using cached map data.
  • For places that are obtained from the Suggestion class, the geographic coordinates always contain a latitude and a longitude equal to 0. An additional places request is needed to obtain the coordinates.

Version 4.4.0.2

New Features

  • Search for places along a route: Added the GeoCorridor option to filter TextQuery results when performing an asynchronous search request along a route with the method TextQuery(query, in: corridorArea, near: areaCenter).
  • Search for places by category along a route: Added the CategoryQuery structure that accepts the GeoCorridor option in its constructors with the filter parameter CategoryQuery(_ : [PlaceCategory], filter: String, in: GeoCorridor) and without the filter parameter CategoryQuery(_ : [PlaceCategory], in: GeoCorridor) to enable category search along a route. This feature is in BETA state.
  • Added to the Details class the method: getPrimaryCategories() -> [PlaceCategory] to get a place category from the result of a search query.
  • Added a new font with Chinese, Japanese and Korean characters. The font occupies 1.7MB and can be optionally removed to save space: Open the heresdk.framework file and remove the following files:
    • style/fonts/DroidSansFallback.woff
    • style/fonts/DroidSansFallback.license

API Changes

  • Changed the rendered resolution of map tiles from 256x256 to 512x512 pixels. Now, all zoom levels are shifted by -1. I.e. users should subtract 1 from their default zoom levels in their apps or custom zoom level limits.
  • Reduced the rotation sensitivity of the Pinch Rotate gesture. Now, it is easier to zoom in on the map without rotating it.

Resolved Issues

  • Fixed: Map labels are not rendered in Chinese, Japanese and Korean. Now, Map labels are rendered in Chinese, Japanese and Korean.

Known Issues

  • SearchEngine: Place.getId() is empty for reverse geocoding results.
  • Map gestures can be slow when there's no internet connection and the map is using cached map data.
  • For places that are obtained from the Suggestion class, the geographic coordinates always contain a latitude and a longitude equal to 0. An additional places request is needed to obtain the coordinates.

Version 4.3.4.0

Resolved Issues

  • Fixed visual design of the disputed borders for the normalDay and hybridDay map styles.

Known Issues

  • SearchEngine: Place.getId() is empty for reverse geocoding results.
  • Map labels are not rendered in Chinese.
  • Map gestures can be slow when there's no internet connection and the map is using cached map data.

Version 4.3.3.0

New Features

  • Added the method search(placeIdQuery query: PlaceIdQuery, languageCode: LanguageCode?, completion: PlaceIdSearchCompletionHandler) -> TaskHandle to perform an asynchronous request to search for a place based on its ID and language code.
  • Added the possibility to filter AddressQuery results by the CountryCode with the method AddressQuery(query: String, near: GeoCoordinates, inCountries: [CountryCode]).
  • Added the possibility to filter TextQuery results by the CountryCode with the method TextQuery(query: String, near: GeoCoordinates, inCountries: [CountryCode]).
  • Added the ability to get the currently used tile cache size with the method var tilesCacheSize: UInt32.

Deprecated

  • Deprecated the method search(placeIdQuery query: PlaceIdQuery, completion: PlaceIdSearchCompletionHandler) -> TaskHandle. Use the newly introduced search(placeIdQuery query: PlaceIdQuery, languageCode: LanguageCode?, completion: PlaceIdSearchCompletionHandler) -> TaskHandle method instead.

Resolved Issues

  • Fixed: Route scene is not displayed fully for the longest routes. Now, the route scene is displayed fully for the longest routes.
  • Fixed: Missing continent labels at maximum zoom out level. Now, continent labels are rendered at the maximum zoom out level.

Known Issues

  • SearchEngine: Place.getId() is empty for reverse geocoding results.
  • Map labels are not rendered in Chinese.

Version 4.3.2.0

New Features

  • Added updated support for the SDKOptions.cachePath handling. If SDKOptions.cachePath is not set, it will be assigned a default path [to be precise: <Application Home>/Library/Caches].

Resolved Issues

  • Fixed: The Authentication protocol was not always called on the main thread. Now the protocol is guaranteed to be always called on the main thread.

Known Issues

  • SearchEngine: Place.Id is empty for reverse geocoding results.
  • Map labels are not rendered in Chinese.

Version 4.3.1.0

Resolved Issues

  • Fixed: AvoidanceOptions will be ignored when calculating truck routes. Now, AvoidanceOptions are considered when calculating truck routes.

Known Issues

  • SearchEngine: Place.Id is empty for reverse geocoding results.

Version 4.3.0.0

New Features

  • Added the GeoCoordinates(latitude: Double, longitude: Double, altitude: Double) constructor.
  • Added the GeoCircle() constructor that accepts type double for the radius parameter.
  • Added support for map circles: Added the GeoPolygon(@NonNull GeoCircle geoCircle) constructor, which can then be used to create a MapPolygon that has the shape of a circle.
  • Added the Anchor2D() constructor that accepts type double for the horizontal and vertical parameters.
  • Added the function MapViewLite.pickMapItems(at viewCoordinates: Point2D, radius: Double, callback: PickMapItemsCallbackLite) to pick map items from the MapView.
  • Added the following to the com.here.sdk.search package:
    • AddressQuery to specify an address query.
    • CategoryQuery to specify a query by categories.
    • Contact that represents the contact information.
    • IdQuery to specify an id query.
    • OpeningHours to represent the information on opening hours.
    • Place to represent a location object, such as a country, a city, a point of interest(POI) etc.
    • PlaceCategory to define a set of most commonly used categories.
    • ScheduleDetails to encapsulate schedule details complying with the iCalendar specification.
    • Suggestion to represent a suggestion of an address or a place based on a query.
    • TextQuery option to specify a text query.
  • Added the following methods to SearchEngine:
    • search(idQuery query: IdQuery, completion: IdSearchCompletionHandler) -> TaskHandle to search for a place based on its ID.
    • search(_ query: CategoryQuery, options: SearchOptions, completion: SearchCompletionHandler) -> TaskHandle to search for places based on a list of categories.
  • Added the structure Details to the Place object. It contains following fields:
    • categories for the list of categories assigned to the place.
    • contacts for the contact list of the place.
    • openingHours for the list of information on the opening hours of the place.
  • Added the following protocols to manage tile caching:
    • maxTilesCacheSize property to set the maximum size available for tiles caching when creating a map view in a storyboard.
    • init(maxTilesCacheSizeInBytes: UInt32), init(frame: CGRect, maxTilesCacheSizeInBytes: UInt32), init(frame: CGRect, withSdkEngine sdkEngine: SDKNativeEngine, maxTilesCacheSizeInBytes: UInt32) initializers to set the maximum size available for tiles caching when creating a map view by hand.
    • clearTilesCache() to remove all cached tiles from the persistent memory.
  • Added the optional parameter public init(accessKeyId: String, accessKeySecret: String, cachePath: String, authenticationPreferences: AuthenticationPreferences = AuthenticationPreferences.useServerTime) of type AuthenticationPreferences to the SDKOptions constructor to use the local system time for authentication instead of getting it from the server.

API Changes

  • Changed type of GeoCoordinates.altitude from float to double.
  • Changed the return type of Route.durationInSeconds from Int64 to Int32.
  • Changed the return type of Route.trafficDelayInSeconds from Int64 to Int32.
  • Changed the return type of Section.durationInSeconds from Int64 to Int32.
  • Changed the return type of Section.trafficDelayInSeconds from Int64 to Int32.
  • Changed the return type of SectionProgress.remainingDurationInSeconds from Int64 to Int32.
  • Changed the return type of SectionProgress.trafficDelayInSeconds from Int64 to Int32.
  • Changed the method in the PanDelegate from onPan(state: GestureState, origin: Point2D, translation: Point2D, velocity: Float) -> Void to onPan(state: GestureState, origin: Point2D, translation: Point2D, velocity: Double) -> Void.
  • Changed the method in the PinchRotateDelegate from onPinchRotate(state: GestureState, pinchOrigin: Point2D, rotationOrigin: Point2D, twoFingerDistance: Float, rotation: Angle) -> Void to onPinchRotate(state: GestureState, pinchOrigin: Point2D, rotationOrigin: Point2D, twoFingerDistance: Double, rotation: Angle) -> Void.
  • Changed the method in the TwoFingerPanDelegate from onTwoFingerPan(state: GestureState, origin: Point2D, translation: Point2D, velocity: Float) -> Void to onTwoFingerPan(state: GestureState, origin: Point2D, translation: Point2D, velocity: Double) -> Void.
  • Removed the MapMatchedWaypoint class.
  • Removed the RouteRestrictions struct.
  • Removed the SideOfStreet enumeration.
  • Removed the Route.mapMatchedWaypoints property.
  • Removed the protocol Searchable.
  • Replaced Suggestion.searchable with Suggestion.place.
  • Removed the AutosuggestEngine, GeocodingEngine, and ReverseGeocodingEngine. Their functionalities are now integrated into the SearchEngine class:
    • Use SearchEngine.search(textQuery:options:completion:) to search for Places.
    • Use SearchEngine.search(addressQuery:options:completion:) to geocode an address to a geographic coordinate. Now, geocoding is limited to GeoCoordinates. GeoBox and GeoCircle are dropped.
    • Use SearchEngine.search(coordinates:options:completion:) to reverse geocode a geographic coordinate to an address.
    • Use SearchEngine.search(categoryQuery:options:completion:) to search for Places based on a list of categories.
    • Use SearchEngine.suggest(textQuery:options:completion:) to search for auto suggested Place results.
  • Replaced SearchCategory with SearchEngine.search(_ query: CategoryQuery, options: SearchOptions, completion: SearchCompletionHandler) -> TaskHandle.
  • Replaced the CategoryId class with the PlaceCategory class.
  • Replaced the SearchResult class with the Place class.
  • Replaced the SearchEngine.CompletionHandler, GeocodingEngine.CompletionHandler, and the ReverseGeocodingEngine.CompletionHandler by the SearchCompletionHandler class.
  • Replaced the AutosuggestEngine.CompletionHandler with the the SuggestCompletionHandler class.
  • Removed the following classes and their functionalities:
    • AutosuggestResultType
    • GeocodingResult
  • Removed the AutosuggestResult class. Its functionalities have now been moved to the Suggestion class.
  • Removed the field textformat from the SearchOptions class.
  • Removed the function defaultOptions: SearchOptions.
  • Removed the following constructors from the SearchEngine:
    • init(defaultOptions: HLSSearchOptions).
    • init(_ sdkEngine: SDKNativeEngine, defaultOptions: HLSSearchOptions).
  • Removed the BicycleOptions from the transport mode options for route calculation.
  • OptimizationMode.shortest is no longer supported and now automatically converted to OptimizationMode.fastest for the transport mode option TransportMode.pedestrian.

Deprecated

  • Deprecated the GeoCoordinates(latitude: Double, longitude: Double, altitude: Float) constructor. Use the GeoCoordinates(latitude: Double, longitude: Double, altitude: Double) constructor instead.
  • Deprecated the function MapViewLite.pickMapItems(at viewCoordinates: Point2D, radius: Float, callback: PickMapItemsCallbackLite). Use the function MapViewLite.pickMapItems(at viewCoordinates: Point2D, radius: Double, callback: PickMapItemsCallbackLite) instead.
  • Deprecated the GeoCircle() constructor that accepts type float for the radius parameter. Use the GeoCircle() constructor that accepts type double for the radius parameter instead.
  • Deprecated the Anchor2D() constructor that accepts type float for the horizontal and vertical parameters. Use the Anchor2D() constructor that accepts type double for the horizontal and vertical parameters instead.

Resolved Issues

  • Fixed: Engines will not operate when the time of the device is incorrect. Now, the timestamp of the device is authenticated to enable the engines to operate.

Known Issues

  • SearchEngine: Place.Id is empty for reverse geocoding results.
  • AvoidanceOptions will be ignored when calculating truck routes.

Version 4.2.2.0

New Features

  • Added a TileServerProvider interface that allows to provide a custom implementation to generate dynamic URLs for a RasterLayer. This can be useful to set different raster layer sources based on the region in the world. Added SimpleTileServerProvider as a convenience implementation that sets a static tile URL provider.

API Changes

  • Changed constructor for RasterLayer to allow setting a TileServerProvider (see above).

Known Issues

  • Engines will not operate when the device's time is wrong. Also, the map will not be able to show any (vector) tiles.

Deprecated

  • The field Camera.boundingRect is deprecated. Use the newly introduced field Camera.boundingBox instead.

Version 4.2.1.0

New Features

  • Added CameraLite.orbitBy(_ delta: CameraLite.OrientationUpdate, around origin: Point2D) to orbit the camera around a specified point.
  • Added CameraLite.zoomBy(_ factor: Double, around origin: Point2D) to zoom the camera around a specified point relative to the given factor.
  • Added Authentication API to obtain a valid token that can be used to initiate queries to HERE REST APIs.

API Changes

  • Replaced enum type RoadType.street with RoadType.rural and RoadType.urban.

Known Issues

  • Engines will not operate when the device's time is wrong. Also, the map will not be able to show any (vector) tiles.

Version 4.2.0.0

Highlights

  • Added Swift module stability for the HERE SDK XCFramework to allow forward-compatibility with future Swift versions. The current framework is built using Swift 5.1.2, but it should be also readable for future Swift compiler versions.

New Features

  • Added the HERE logo watermark placement functionality with the enum WatermarkPlacement and method MapViewLite.setWatermarkPosition(placement: WatermarkPlacement, bottomCenterMargin: UInt32).

API Changes

  • Changed all class names within the MapViewLite package to have a 'Lite' suffix. If any class name already contained 'Lite' it was moved consistently to the end of the name.
  • Changed completion handlers to nested types in the following methods:
    • SearchEngine:
      • SearchEngine.search(at coordinates: GeoCoordinates, query: String, options: SearchOptions, completion: SearchCallback) to SearchEngine.search(at coordinates: GeoCoordinates, query: String, options: SearchOptions, completion: SearchEngine.CompletionHandler).
    • AutosuggestEngine:
      • AutosuggestEngine.suggest(at coordinates: GeoCoordinates, query: String, options: AutosuggestOptions, completion: AutosuggestCallback) to AutosuggestEngine.suggest(at coordinates: GeoCoordinates, query: String, options: AutosuggestOptions, completion: AutosuggestENgine.CompletionHandler).
    • ReverseGeocodingEngine:
      • ReverseGeocodingEngine.searchAddress(coordinates: GeoCoordinates, options: ReverseGeocodingOptions, completion: ReverseGeocodingCallback) to ReverseGeocodingEngine.searchAddress(at coordinates: GeoCoordinates, query: String, options: ReverseGeocodingOptions, completion: ReverseGeocodingEngine.CompletionHandler).
    • GeocodingEngine:
      • GeocodingEngine.searchLocations(coordinates: GeoCoordinates, options: GeocodingOptions, completion: GeocodingCallback) to GeocodingEngine.searchLocations(at coordinates: GeoCoordinates, query: String, options: GeocodingOptions, completion: GeocodingEngine.CompletionHandler).
    • TrafficEngine:
      • TrafficEngine.queryForIncidents(in boxArea: GeoBox, options: IncidentQueryOptions, completion: QueryForIncidentsCallback) to TrafficEngine.queryForIncidents(in boxArea: GeoBox, options: IncidentQueryOptions, completion: TrafficEngine.CompletionHandler).
  • Removed the balanced identifier from the OptimizationMode enum for route calculation.
  • Renamed RouteLeg to Section
  • Renamed Route.legs to Route.sections.
  • Renamed RouteProgress.routeLegIndex to RouteProgress.sectionIndex.
  • Renamed MapMarkerResource to MapImageLite.
  • Renamed PickMapItemResult to PickMapItemResultLite.
  • Renamed CameraObserver to CameraObserverLite.
  • Renamed member geoBox to boundingBox in the following data structures:
    • SearchResult.geoBox to SearchResult.boundingBox.
    • AutosuggestResult.geoBox to AutosuggestResult.boundingBox.
    • GeocodingResult.geoBox to GeocodingResult.boundingBox.
    • OpenSearchEngine.Result.geoBox to OpenSearchEngine.Result.boundingBox.
    • OpenGeocodingEngine.Result.geoBox to OpenGeocodingEngine.Result.boundingBox.
  • Renamed SearchResult.geoCoordinates to SearchResult.coordinates.

Resolved Issues

  • Fixed issue with incorrect pixel width set for rendering a MapPolyline on the map. Now, a MapPolyline can have its stroke width set to physical pixels.

Known Issues

  • Engines will not operate when the device's time is wrong. Also, the map will not be able to show any (vector) tiles.

Version 4.1.6.0

Highlights

  • Updated binary distribution bundle to use Apple's new XCFramework format. As a benefit, it is no longer necessary to use lipo to remove undesired x86 architectures for distribution.
  • The minimum supported OS was raised from iOS 11 to iOS 12 as the market share for devices running iOS 11 is below 3%.

New Features

  • Added the new fields mainLanguageCode and fallbackLanguageCode to specify the desired map language via MapSceneConfig when loading a map scene.
  • Added a Color class that encapsulates common color values.
  • Added Route.trafficDelayInSeconds and RouteLeg.trafficDelayInSeconds.

API Changes

  • Custom route options moved to CustomRoutingEngine as nested types:
    • CustomCarOptions moved to CustomRoutingEngine.CarOptions.
    • CustomBicycleOptions moved to CustomRoutingEngine.BicycleOptions.
    • CustomPedestrianOptions moved to CustomRoutingEngine.PedestrianOptions.
    • CustomTruckOptions moved to CustomRoutingEngine.TruckOptions.
    • CustomTruckSpecifications moved to CustomRoutingEngine.TruckSpecifications.
  • MapCircle center latitude is now limited to the range [85S, 85N]. Map circle's radius can't exceed the range [89S, 89N] to prevent crossing a pole, otherwise it is clamped.
  • Changed types for Incident.startTimestamp, Incident.stopTimestamp and Incident.updateTimestamp from Long to Date.
  • Changed field coordinates to geoCoordinates in SearchResult.
  • Changed the occurrences for the argument label callback to completion for the methods in the following classes;
    • AutosuggestEngine:
      • AutosuggestEngine.suggest(at: GeoCoordinates, query: String, options: AutosuggestOption, callback: AutosuggestCallback) to AutosuggestEngine.suggest(at: GeoCoordinates, query: String, options: AutosuggestOption, completion: AutosuggestCallback).
      • AutosuggestEngine.suggest(at: GeoCoordinates, query: String, callback: AutosuggestCallback) to AutosuggestEngine.suggest(at: GeoCoordinates, query: String, completion: AutosuggestCallback).
      • AutosuggestEngine.suggest(in: GeoBox, query: String, options: AutosuggestOption, callback: AutosuggestCallback) to AutosuggestEngine.suggest(in: GeoBox, query: String, options: AutosuggestOption, completion: AutosuggestCallback).
      • AutosuggestEngine.suggest(in: GeoBox, query: String, callback: AutosuggestCallback) to AutosuggestEngine.suggest(in: GeoBox, query: String, completion: AutosuggestCallback).
      • AutosuggestEngine.suggest(in: GeoCircle, query: String, options: AutosuggestOption, callback: AutosuggestCallback) to AutosuggestEngine.suggest(in: GeoCircle, query: String, options: AutosuggestOption, completion: AutosuggestCallback).
      • AutosuggestEngine.suggest(in: GeoCircle, query: String, callback: AutosuggestCallback) to AutosuggestEngine.suggest(in: GeoCircle, query: String, completion: AutosuggestCallback).
    • GeocodingEngine:
      • GeocodingEngine.searchLocation(in: GeoBox, query: String, options: GeocodingOption, callback: GeocodingCallback) to GeocodingEngine.searchLocation(in: GeoBox, query: String, options: GeocodingOption, completion: GeocodingCallback).
      • GeocodingEngine.searchLocation(in: GeoBox, query: String, callback: GeocodingCallback) to GeocodingEngine.searchLocation(in: GeoBox, query: String, completion: GeocodingCallback).
      • GeocodingEngine.searchLocation(in: GeoCircle, query: String, options: GeocodingOption, callback: GeocodingCallback) to GeocodingEngine.searchLocation(in: GeoCircle, query: String, options: GeocodingOption, completion: GeocodingCallback).
      • GeocodingEngine.searchLocation(in: GeoCircle, query: String, callback: GeocodingCallback) to GeocodingEngine.searchLocation(in: GeoCircle, query: String, completion: GeocodingCallback).
    • ReverseGeocodingEngine:
      • ReverseGeocodingEngine.searchAddress(coordinates: GeoCoordinates, options: ReverseGeocodingOptions, callback: ReverseGeocodingCallback) to ReverseGeocodingEngine.searchAddress(coordinates: GeoCoordinates, options: ReverseGeocodingOptions, completion: ReverseGeocodingCallback).
      • ReverseGeocodingEngine.searchAddress(coordinates: GeoCoordinates, callback: ReverseGeocodingCallback) to ReverseGeocodingEngine.searchAddress(coordinates: GeoCoordinates, completion: ReverseGeocodingCallback).
    • SearchEngine:
      • SearchEngine.search(at: GeoCoordinates, query: String, options: SearchOptions, callback: SearchCallback) to SearchEngine.search(at: GeoCoordinates, query: String, options: SearchOptions, completion: SearchCallback).
      • SearchEngine.search(at: GeoCoordinates, query: String, callback: SearchCallback) to SearchEngine.search(at: GeoCoordinates, query: String, completion: SearchCallback).
      • SearchEngine.search(in: GeoBox, query: String, options: SearchOptions, callback: SearchCallback) to SearchEngine.search(in: GeoBox, query: String, options: SearchOptions, completion: SearchCallback).
      • SearchEngine.search(in: GeoBox, query: String, callback: SearchCallback) to SearchEngine.search(in: GeoBox, query: String, completion: SearchCallback).
      • SearchEngine.search(in: GeoCircle, query: String, options: SearchOptions, callback: SearchCallback) to SearchEngine.search(in: GeoCircle, query: String, options: SearchOptions, completion: SearchCallback).
      • SearchEngine.search(in: GeoCircle, query: String, callback: SearchCallback) to SearchEngine.search(in: GeoCircle, query: String, completion: SearchCallback).
      • SearchEngine.search(at: GeoCoordinates, categoryList: [CategoryId], options: SearchOptions, callback: SearchCallback) to SearchEngine.search(at: GeoCoordinates, categoryList: [CategoryId], options: SearchOptions, completion: SearchCallback).
      • SearchEngine.search(at: GeoCoordinates, categoryList: [CategoryId], callback: SearchCallback) to SearchEngine.search(at: GeoCoordinates, categoryList: [CategoryId], completion: SearchCallback).
      • SearchEngine.search(in: GeoBox, categoryList: [CategoryId], options: SearchOptions, callback: SearchCallback) to SearchEngine.search(in: GeoBox, categoryList: [CategoryId], options: SearchOptions, completion: SearchCallback).
      • SearchEngine.search(in: GeoBox, categoryList: [CategoryId], callback: SearchCallback) to SearchEngine.search(in: GeoBox, categoryList: [CategoryId], completion: SearchCallback).
      • SearchEngine.search(in: GeoCircle, categoryList: [CategoryId], options: SearchOptions, callback: SearchCallback) to SearchEngine.search(in: GeoCircle, categoryList: [CategoryId], options: SearchOptions, completion: SearchCallback).
      • SearchEngine.search(in: GeoCircle, categoryList: [CategoryId], callback: SearchCallback) to SearchEngine.search(in: GeoCircle, categoryList: [CategoryId], completion: SearchCallback).
    • TrafficeEngine:
      • TrafficeEngine.queryForIncidents(in : GeoBox, options: IncidentQueryOptions, callback: QueryForIncidentsCallback) to TrafficeEngine.queryForIncidents(in : GeoBox, options: IncidentQueryOptions, completion: QueryForIncidentsCallback).
  • Removed trafficMode option from RouteOptions. Traffic delay is now enabled by default.
  • Renamed Route.shape to Route.polyline.
  • Renamed RouteLeg.shape to RouteLeg.polyline.
  • Renamed Maneuver.shape to Maneuver.polyline.
  • Changed type for GeocodingOptions.maxItems from UInt32 to Int32.
  • Changed the maximum possible number of route alternatives for the method RouteOptions.alternatives from 9 to 6.
  • Changed the draw order behavior for MapPolylines, MapCircles and MapPolygons. The draw order is now limited by 1000 to avoid conflicts with regular map data like labels or building footprints. The draw order should be mainly used to adjust the stack order of objects of the same type.
  • Renamed WaypointType.stopOver to WaypointType.stopover.
  • Renamed Route.travelTimeInSeconds to Route.durationInSeconds and changed the returned type from Int32 to Int64. Same for RouteLeg.
  • Removed Route.baseTimeInSeconds and Route.trafficTimeInSeconds. Same for RouteLeg. Use Route.trafficDelayInSeconds instead.

Resolved Issues

  • Fixed issue with map data not being localized. See the new fields added to MapSceneConfig above to set a LanguageCode.
  • Fixed issue with kinetic panning triggered unnecessarily on the iOS emulator. Now, kinetic panning is triggered only when the mouse button is released at the end of the gesture.
  • Fixed issue with error handling when loading custom map styles. Now, loading a map returns an invalid scene error if the YAML file passed does not exist and is incorrect or has no protocol specified.
  • Fixed issue with traffic flow missing at a specific zoom level. Now, traffic flow is displayed at all zoom levels.

Version 4.1.5.0

New Features

  • Added kinetic panning to the map ('slippy map'). The map will now smoothly animate along the last direction after a user stops panning. It can be disabled together with the pan gesture.
  • PanGestureHandler.onPan() is now called with GestureState.cancel for the first touch after GestureState.end to stop any kinetic movement that is still in progress.
  • Added Maneuver.roadNumber and Maneuver.nextRoadNumber to get the current road number and the next road number.
  • Added lambda notation / closure support when searching for SearchCategory.

API Changes

  • Removed option notImplementedYet from EngineInstantiationErrorCode enum.
  • Renamed EngineInstantiationErrorCode enum to InstantiationErrorCode.
  • Renamed EngineInstantiationError to InstantiationError.
  • Renamed Location.timestampInMilliseconds to Location.timestamp.
  • Changed type Location.timestamp from Long to Date.
  • Removed field MapMatchedWaypoint.mapMatchedRoadName.
  • Changed CalculateRouteCallback type from protocol to typealias.
  • Route options moved to RoutingEngine as nested types:
    • CarOptions moved to RoutingEngine.CarOptions.
    • BicycleOptions moved to RoutingEngine.BicycleOptions.
    • PedestrianOptions moved to RoutingEngine.PedestrianOptions.
    • TruckOptions moved to RoutingEngine.TruckOptions.
    • TruckSpecifications moved to RoutingEngine.TruckSpecifications.
  • Changed CalculateRouteCallback type from protocol to a typealias function.
  • Removed MapMatchedWaypoint.mapMatchedRoadName.

Known Issues

  • Map data may not be localized based on the device's language.

Resolved Issues

  • Optimized the HERE SDK for publishing to Apple's App Store.

Version 4.1.4.0

Highlights

  • Xcode 11.2.1 and Swift 5.1.2 are now supported as minimum requirement.
  • Added new tutorials to the Developer's Guide that show how to implement smooth Move-To-XY animations and animated map gestures for zoom in/out and kinetic panning.

New Features

  • Added Maneuver.roadName and Maneuver.nextRoadName to get the current road name and the next road name.
  • Added the method CameraLimits.getMaxTiltForZoomLevel() for checking the tilt limit at a specific zoom level. The maximum tilt depends on the current zoom level; setting a new zoom level will potentially change the tilt angle.

API Changes

  • Renamed MapScene to MapLiteScene.
  • Renamed Instruction to Maneuver.
  • Renamed RouteTextOptions.languages to RouteTextOptions.language as it accepts not more than one language.
  • Moved Route.transportMode to RouteLeg.transportMode.
  • Moved LoadSceneCallback to MapLiteScene. The callback changed from a protocol to a typealias.
  • Renamed SceneError to ErrorCode and moved it to MapLiteScene.
  • Renamed CameraLimitsErrorCode to ErrorCode and moved it to CameraLimits.
  • Renamed the following map objects:
    • MapPolygon to MapLitePolygon.
    • MapPolyline to MapLitePolyline.
    • MapCircle to MapLiteCircle.
    • MapMarker to MapLiteMarker.
  • Removed the constant CameraLimits.maxTilt.

Known Issues

  • Map data may not be localized based on the device's language.

Version 4.1.3.0

This release is mainly focused on stabilization of existing features, bug fixes and overall performance improvements.

Known Issues

  • Swift 5.1 is not yet supported.
  • Map data may not be localized based on the device's language.

Resolved Issues

  • The draw order for raster tile layers now works relatively to other raster tile layers.
  • Fixed outlines for map circles.

Version 4.1.2.0

New Features

  • The SearchEngine can now be used to search for categories like 'restaurants' by setting a list of CategoryId values.

API Changes

  • Renamed SearchItem to SearchResult.
  • Removed the field SearchResult.href.
  • Renamed the members:
    • AutosuggestResult.boundingRect to AutosuggestResult.geoBox.
    • GeocodingResult.boundingRect to GeocodingResult.geoBox.
    • SearchResult.boundingBox to SearchResult.geoBox.
  • Renamed the members:
    • AutosuggestResult.geoCoordinates to AutosuggestResult.coordinates.
    • GeocodingResult.geoCoordinates to GeocodingResult.coordinates.

Known Issues

  • Swift 5.1 is not yet supported.

Version 4.1.1.0

New Features

  • SearchEngine can now be used to search within a bounding rect for categories by setting a list of CategoryId values.
  • AutosuggestEngine:
    • Added the option to search within a GeoCircle.
    • Added the possibility to request specific types (place, address and/or query) via AutosuggestResultType that can be set for the AutosuggestOptions.
    • Added TaskHandle as a return value when calling AutosuggestEngine.suggest(...) to cancel an ongoing call.

API Changes

  • Changed SearchOptions to AutosuggestOptions when consumed by AutosuggestEngine.
  • Renamed SearchItemCategory to SearchCategory.
  • Changed type SearchCategory from enum to struct. SearchCategory now contains the following fields:
    • id (String, required): A unique category identifier. This contains the previous enum values as String.
    • iconLink (String, optional): A web link to the category icon.
    • localizedName (String, required): A localized name describing the category.
  • Removed Instruction.Direction because this information is already available inside Instruction.action.
  • Renamed GeoBoundingRect to GeoBox.
  • Changed GeoBoundingRect.intersects(geoBoundingRect: GeoBoundingRect) to GeoBox.intersects(geoBox: GeoBox).
  • Changed GeoBoundingRect.contains(geoBoundingRect: GeoBoundingRect) to GeoBox.contains(geoBox: GeoBox).

Known Issues

  • Swift 5.1 is not yet supported.

Version 4.1.0.0

New Features

  • Added bounding box search for auto suggestions.
  • Added an empty MapStyle that, for example, can be used together with opaque custom raster tile layers.
  • Added the following error values httpError, serverUnreachable and invalidParameter to extend error handling for Search, Autosuggest, Geocoding and ReverseGeocoding.

API Changes

  • Renamed PlaceAutosuggestResult to AutosuggestResult.
  • Renamed EngineInstantiationError enumeration to EngineInstantiationErrorCode.
  • Renamed CameraLimitsError enumeration to CameraLimitsErrorCode.
  • Renamed InstantiationError enumeration to InstantiationErrorCode.
  • Unified the error type for SearchEngine, AutosuggestEngine, GeocodingEngine and ReverseGeocodingEngine to be of type SearchError.
  • MapScene.setLayerState is executed immediately now, it no longer takes a callback as an argument, but instead throws an error exception.

Known Issues

  • Swift 5.1 is not yet supported.

Resolved Issues

  • Fixed: Map polylines may disappear at certain zoom levels when zooming.
  • Fixed: Parts of the horizontal and vertical lines of a polygon outline may not be drawn perfectly under certain conditions.

Deprecated

  • The methods CameraLimits.setMinBearing(), CameraLimits.setMaxBearing(), CameraLimits.getMinBearing() and CameraLimits.getMaxBearing() are deprecated. Use the newly introduced class AngleRange instead.

results matching ""

    No results matching ""