- Sample Map+Positioning(VPS): user position is not updated after closing scanning view
Starting iOS 18, there is a bug where ARSession is automatically stopped by ARView when the view is dismissed/hidden. Because of this, the positioning process stops after a few seconds. If you are using ARView, we suggest a workaround in our sample application
LocationSource
var isAvailable: Bool
changed tostatic var isAvailable: Bool
- PosSDK: Add static "isAvailable" method to LocationSource
- MapSDK: Some navigation instructions have a "null" suffix
- MapSDK: Multi-level itinerary segments are shown for all levels
- PosSDK(VPS): VPS session is not reset when the application returns from background
- PosSDK(VPS): Switch to SCAN_REQUIRED state when user is static in an elevator or escalator in navigation mode
- Map
- MapLibre 6.4.2 -> 6.5.2
- Polestar
- NAOSDK 4.11.15.2 -> 4.11.16
- MapSDK: buildings that are not related to the current map have been loaded
NavigationInstructions
struct has been moved fromWemapMapSDK
toWemapCoreSDK
Direction
enum has been moved fromWemapMapSDK
toWemapCoreSDK
Step.getNavigationInstructions
has been moved fromWemapMapSDK
toWemapCoreSDK
- CoreSDK: expose mediaUrl, mediaType of POI
- CoreSDK: move Step.getNavigationInstructions to CoreSDK
- MapSDK: occasional crash on start navigation on iOS 15 with languages other than English
- MapSDK: Some navigation instructions have a "null" suffix
- PosSDK(VPS): VPS session is not reset when the application returns from background
- PosSDK(VPS): Switch to SCAN_REQUIRED state when user is static in an elevator or escalator in navigation mode
- PosSDK(VPS): Change VPS request timeout to 20s
- MapSDK: buildings that are not related to the current map have been loaded
- MapSDK: POI markers are hidden below a certain zoom level
- PosSDK(VPS): accept VPS endpoint with and without '/' at the end
- MapLibre 6.4.1 -> 6.4.2
- PosSDK: PS: enable the use for simulator
- MapLibre 6.4.0 -> 6.4.1
- RxBlocking 6.7.0 -> 6.7.1
- RxCocoa 6.7.0 -> 6.7.1
- RxRelay 6.7.0 -> 6.7.1
- RxSwift 6.7.0 -> 6.7.1
LevelChange.direction: String
has been changed toLevelChange.direction: Incline
Step
has been changed:let isGate: Bool
has been moved toextras.isGate
let subwayEntranceName: String?
has been moved toextras.subwayEntranceName
Leg
has been changed:let start: Coordinate
has been changed tolet start: Destination
let end: Coordinate
has been changed tolet end: Destination
ItinerariesParametersMultipleDestinations
has been renamed toItinerariesParametersMultiDestinations
ItinerarySearchOptions
has been replaced everywhere from nullable parameter to parameter with a default value
- PosSDK(VPS): add checkVpsAvailability() method
- MapSDK: offline maps support
- PosSDK(VPS): wrong level detection if altitude < 0
- MapLibre 6.2.0 -> 6.4.0
- RxSwift 6.6.0 -> 6.7.0
- PosSDK: Polestar LocationSource does not work
- NAOSDK 4.11.14 -> 4.11.15
- MapSDK: centerToPOI fails if POI doesn't have level or there is no building in focus
- MapSDK: allow POIs that are not attached to the building to be shown on the map
NavigationInfo
andNavigationInfoHandler
have been moved fromWemapMapSDK
toWemapCoreSDK
- CoreSDK: add optional mapId parameter to ItineraryParameters
- CoreSDK: Make NavigationInfoHandler usable without MapSDK
- MapLibre 6.1.1 -> 6.2.0
- Alamofire 5.8.1 -> 5.9.0
- Due to migration from MapLibre 5.13.0 to 6.1.1 additional changes needed:
- Changed the prefix of files, classes, methods, variables and everything from
MGL
toMLN
. If you are using NSKeyedArchiver or similar mechanishm to save the state, the app may crash after this change when trying to unarchive the state using old names of the classes. You need to clean the saved state of the app and save it using new classes. - The Swift package needs to be imported with
import MapLibre
instead ofimport Mapbox
.
- Changed the prefix of files, classes, methods, variables and everything from
- removed support for iOS 11
VPSARKitLocationSource.State.limited(reason: VPSARKitLocationSource.State.Reason)
has been changed toVPSARKitLocationSource.State.limited(reason: ARCamera.TrackingState.Reason)
:VPSARKitLocationSource.State.Reason.correction
has been removed
WemapMapViewDelegate.map(_: MapView, didTouchFeature feature: MGLFeature)
andWemapMapViewDelegate.map(_ map: MapView, didTouchPointOfInterest poi: PointOfInterest)
delegate methods have been removed. UsePointOfInterestManagerDelegate.pointOfInterestManager(_: PointOfInterestManager, didTouchPointOfInterest poi: PointOfInterest)
orPointOfInterestManagerDelegate.pointOfInterestManager(_: PointOfInterestManager, didSelectPointOfInterest poi: PointOfInterest)
instead.WemapMap.setEnvironment(_: Environment)
has been moved toWemapCore.setEnvironment(_: Environment)
Itinerary
has been changed:let from: Coordinate
has been renamed tolet origin: Coordinate
let to: Coordinate
has been renamed tolet destination: Coordinate
let mode: TravelMode
has been renamed tolet transitMode: TravelMode
Leg
has been changed:let from: Coordinate
has been renamed tolet start: Coordinate
let to: Coordinate
has been renamed tolet end: Coordinate
let mode: TravelMode
has been renamed tolet transitMode: TravelMode
TravelMode.bike
has been changed toTravelMode.bike(preference: TravelMode.Preference)
ItineraryParameters.init(from: Coordinate, to: Coordinate, mode: TravelMode, options: ItinerarySearchOptions)
has been changed toItineraryParameters.init(origin: Coordinate, destination: Coordinate, travelMode: TravelMode, searchOptions: ItinerarySearchOptions?)
ItineraryParametersMultipleDestinations
has been renamed toItinerariesParametersMultipleDestinations
:init(origin: Coordinate, pointsOfInterest: [PointOfInterest], mapId: Int, mode: TravelMode, options: ItinerarySearchOptions)
has been changed toinit(origin: Coordinate, pointsOfInterest: [PointOfInterest], mapId: Int, travelMode: TravelMode, searchOptions: ItinerarySearchOptions?)
init(origin: Coordinate, coordinates: [Coordinate], mapId: Int?, mode: TravelMode, options: ItinerarySearchOptions)
has been changed toinit(origin: Coordinate, coordinates: [Coordinate], mapId: Int?, travelMode: TravelMode, searchOptions: ItinerarySearchOptions?)
ItinerarySearchOptions
has been changed:let useStairs: Bool
has been replaced bylet avoidStairs: Bool
let useEscalators: Bool
has been replaced bylet avoidEscalators: Bool
let useElevators: Bool
has been replaced bylet avoidElevators: Bool
ItinerariesResponse
has been changed:let from: Coordinate
has been removedlet to: Coordinate
has been removedlet error: String?
has been replaced bylet status: Status
ItineraryManager
has been changed:getItineraries(from: Coordinate, to: Coordinate, searchOptions: ItinerarySearchOptions)
has been changed togetItineraries(origin: Coordinate, destination: Coordinate, travelMode: TravelMode, searchOptions: ItinerarySearchOptions?)
NavigationManager
has been changed:startNavigation(from: Coordinate, to: Coordinate, timeout: DispatchTimeInterval, options: NavigationOptions, itinerarySearchOptions: ItinerarySearchOptions)
has been changed tostartNavigation(origin: Coordinate?, destination: Coordinate, travelMode: TravelMode, options: NavigationOptions, searchOptions: ItinerarySearchOptions?, timeout: DispatchTimeInterval)
startNavigation(_: Itinerary, options: NavigationOptions, itinerarySearchOptions: ItinerarySearchOptions)
has been changed tostartNavigation(_: Itinerary, options: NavigationOptions, searchOptions: ItinerarySearchOptions?)
- CoreSDK: Add fastest, safest, tourism preferences for bike travel mode
- MapSDK: expose pitch from MapData, take into account the initial value
- MapSDK: expose bearing from MapData, take into account the initial value
- CoreSDK: migrate to Itineraries API v2
- MapSDK: migrate to MapLibre 6.0.0
- MapSDK: replace didTouchFeature by didTouchPointOfInterest
- MapSDK: some POIs are selected and immediately unselected
- MapSDK: MapView is not deallocated on view dismissal
- Itineraries API v1 -> v2
- MapLibre 5.13.0 -> 6.1.1
- NAOSwiftProvider 1.2.2 -> 1.3.0
WemapMap.userLocationManager.userLocationAnnotationViewStyle
has been renamed toWemapMap.userLocationManager.userLocationViewStyle
UserLocationAnnotationViewStyle
has been renamed toUserLocationViewStyle
. Also its properties have been renamed accordingly:puckFillColor
has been renamed toforegroundTintColor
puckBorderColor
has been renamed tobackgroundTintColor
puckArrowFillColor
has been renamed toheadingTintColor
OutOfActiveLevelStyle
properties have been renamed accordingly:puckFillColor
has been renamed toforegroundTintColor
puckArrowFillColor
has been renamed toheadingTintColor
PointOfInterest
has been changed:coordinate2D
has been moved tocoordinate.coordinate2D
levelID
has been moved tocoordinate.levels
- MapSDK/CoreSDK: Let the possibility to sort PoIs by travel time/distance from UserPosition in a "batch" version
- MapSDK: Add remaining distance to the step to NavigationInfo
- MapSDK: PointOfInterest should have a field "Coordinate" to avoid manual transformation later (i.e. nav to a POI)
- MapSDK: Let the possibility to the developer to disable/enable PoI selection
- MapSDK: Add the possibility to change the user location icon dynamically
- MapSDK: ability to change color of outdoor part of itinerary
- MapSDK: make NavigationInstructions attributes public
- MapSDK: navigation details steps order is wrong
- MapSDK: filterByTag method do the opposite of the desired effect
- MapSDK: building's active level is reset when viewport has significantly changed even if the building is still in focus
- MapSDK: outdoor part of itinerary is visible only when selected level 0
- MapSDK: blue dot greyed outdoor when camera is following the user
- Turf 2.7.0 -> 2.8.0
- NAOSDK 4.11.13.1 -> 4.11.14
LocationSourceSimulator
has been renamed toSimulatorLocationSource
NavigationDelegate
has been renamed toNavigationManagerDelegate
WemapMap.getStyleURL(withMapID:token:)
has been renamed toWemapMap.getMapData(mapID:token:)
PolestarLocationSource
has been moved toWemapPositioningSDKPolestar
frameworkVPSARKit*
classes have been moved fromWemapPositioningSDK
toWemapPositioningSDKVPSARKit
framework
- MapSDK: Add NavigationManager.hasActiveNavigation
- MapSDK: have a method to startNavigation with itineraries as parameter
- PosSDK: Add "isAvailable" method to LocationSource
- MapSDK: add possibility to center a POI with optional padding
- MapSDK: Refactor (i) button popup
- PosSDK: "Scan Required" state of VPSARKit location source is never reached
- PosSDK: VPS orientation is wrong
- Map+PositioningExample: add an example app to demonstrate VPS functionality
- MapSDK: Create filter by tags
- MapSDK: Extend MapData with Extras
- MapSDK: fix automatic level change when CameraMode is not tracking
- MapSDK: automatic level switch on user movements freezes/lags the app
- Alamofire 5.8.0 -> 5.8.1
- MapSDK: add helper method to translate step data into textual instructions
- CoreSDK: add itinerary search options for backend
- MapSDK: add onMapClick event
- MapSDK: create a default GPS (fused) LocationSource
- MapSDK: revert back didTouchFeature delegate method
- CoreSDK: fix Coordinate decoding/encoding
- MapSDK: onMapClick called twice
- MapSDK: outdoors, the user's location annotation is displayed in gray
- MapSDK: user position is not projected on stairs
- MapSDK:
map(_: MapView, didTouchFeature feature: MGLFeature)
delegate method has been deprecated and will be removed soon. UsePointOfInterestManagerDelegate.pointOfInterestManager(_: PointOfInterestManager, didSelectPointOfInterest poi: PointOfInterest)
instead.
- Turf 2.6.1 -> 2.7.0
- Alamofire 5.7.1 -> 5.8.0
- RxSwift 6.5.0 -> 6.6.0
-
IndoorLocationProvider
has been renamed toLocationSource
and moved fromWemapMapSDK
toWemapCoreSDK
-
IndoorLocationProviderDelegate
has been renamed toLocationSourceDelegate
and moved fromWemapMapSDK
toWemapCoreSDK
-
Polestar
didLocationChange
should take into accountverticalAccuracy
for proper calculation as shown belowfunc didLocationChange(_ location: CLLocation!) { let coordinate: Coordinate if location.verticalAccuracy < 0 { // outdoor location coordinate = Coordinate(location: location) } else { coordinate = Coordinate(location: location, levels: [Float(location.altitude / 5)]) } lastCoordinate = coordinate delegate?.locationSource(self, didUpdateLocation: coordinate) }
-
map(_: MapView, didTouchFeature feature: MGLFeature)
is removed in favor ofpointOfInterestManager(_: PointOfInterestManager, didSelectPointOfInterest poi: PointOfInterest)
. To receive events fromPointOfInterestManager
you have to implement protocolPointOfInterestManagerDelegate
and assign it tomap.pointOfInterestManager.delegate = self
- MapSDK: switch level automatically on selectPOI if shouldCenter is true
- MapSDK: add new events when a POI is selected/unselected
- MapSDK: Stop event did not reach even if remaining distance is less than threshold
- MapSDK: Navigation info is wrong when itinerary contains indoor and outdoor parts
- MapSDK: click on the PoI symbol (shape) does not select the PoI
- CoreSDK: fix pointOfInterestManager.getPOIs()
- MapSDK: outdoors, the user's location annotation is displayed in gray
- MapSDK: user position is not projected on stairs
- MapSDK: Stop event did not reach even if remaining distance is less than threshold
- MapSDK: Navigation info is wrong when itinerary contains indoor and outdoor parts
- MapSDK: it's possible to remove navigation itinerary using itinerary manager (it should not)