Change Log
v2.5.2 - May 20, 2025
Updates
- Update VisioMove version with various fix
- Update sample with new map and new coordinates
- Update image loading
v2.5.1 - March 14, 2025
Updates
- Update VisioMove Version
- Update : SetPois optimization
- Fix : Issue when rendering with compose
v2.5.0 - Feb 7, 2025
Updates
-
Update VisioMove Version
- Update rendering with compose elements
- Add API to change the color of label programmatically
- Diacritics are now recognized within search bar
v2.4.8 - Jan 21, 2025
Updates
-
Update VisioMove Version
- Optimize routing drawing
- Fixed an issue with accessibility routing
- Update title display for placeInfoView title
v2.4.7 - Jan 7, 2025
Fix
-
-
Better floor detection when using updatePosition method
v2.4.6 - Dec 23, 2024
Fix
-
Update VisioMove
- Improve statbility
-
-
Update sample for routing and content
v2.4.5 - Dec 05, 2024
Updates
-
Update VisioMove Version
- Fixed issue with surface rendering
- Fixed an issue with routing calculation
v2.4.4 - Oct 15, 2024
Updates
-
Update VisioMove Version
- Fixed issue with surface rendering
v2.4.3 - Oct 11, 2024
Updates
- Fixed an issue with routing calculation
- Fixed an issue with compass
- Update VisioMove Version
v2.4.2 - Sept 18, 2024
Updates
- Fixed an issue that make the compass view couldn't be displayed
- Optimize Poi coloration
- Update 'setCategories' method documentation
v2.4.1 - Sept 10, 2024
Updates
-
Update VisioMove Version
- Fixed issue with routing calculation that can cause a crash
- Update routing to be iso with ios version
v2.4.0 - Août 30, 2024
Updates
-
Update VisioMove Version
- Optimize memory usage
- Update routing params : threshold is now customizable
- Fix crash that may appear when loading to much POIs
- Fix issue with added POI in search window
- Update routing params : threshold is now customizable
- Fix minor issue with floor's altitude
v2.3.0 - Juil 26, 2024
Updates
- Updated VenueInfo to be an object VMEVenueInfo : use utility method "venueInfo.toJsonObject()" to convert it to json.
- Updated the design of accessible and optimize button
- Fixed issue with floor detection when using custom location
- Updated VisioMove Version
- And some code Clean-Up
v2.2.1 - Juil 18, 2024
Updates
-
Update VisioMove Version
- Fixed a crash when the app switches to background
v2.2.0 - Juil 02, 2024
Updates
-
Update VisioMove Version
- Memory management improvements
- Loading time improvements
- Update Visitor on scene graph
- Bug when a texture is not ready to display
- Displays gradient and color on background
- Some issues with Vulkan causing black screen
- Added Simple light API to get poi handle from IDs
- Update minimal suported sdk from 21 to 24
- Update compile sdk from 33 to 34
- Improve view accessibility on Building Selector and search component
- Remove Support Librairies, Jetifier is no longuer required
- Fixed issue with instruction path heaght
- Fixed issue when parsing map parameters
- Fixed issue with obfuscation
v2.1.5 - June 06, 2024
Updates
-
Update VisioMove Version
- Optimized loading time
- Optimized anti-aliasing on building
- Fixed Vulkan crashe
- Optimize json parsing with kotlinx-serialization-json
- Added SdkUsage loading map stats
- Fixed name display when updated in SDK
- Fixed height of route to solve z-fight
v2.1.4 - April 5, 2024
Fixed
- Improve stability
v2.1.3 - March 14, 2024
Updates
-
Update VisioMove Version
- Memory optimisation for heavy map
- fixes a bug causing z-fight
- Optimization on loading
- Fixes bug on getAttributes and getModalities APIs
- Fixes bug when bundle data are inconsistent
v2.1.1 - January 30, 2024
Updates
- Global render optimizations
- Optimization on floor change
v2.1.0 - January 9, 2024
Adds
- Adds setIcons APIs
- New theme demo in sample
Fixes
- Fixes a bug on Android causing map display issue.
v2.0.1 - December 12, 2023
Updated
- Fixes a bug on Android causing setPOI to fail when labels are not on map.
- Adds voice navigation code for sample.
v2.0.0 - December 5, 2023
Updated
- Brand new version of VisioMoveEssential !
- Updated VisioMove, now using release [v3.0.0].
- Improve stability with setPois API. Remove deprecated APIs.
- Fixes memory leaks.
- Add setCatégories API.
- Add APIs to put some HTTP/HTTPS headers when we get descriptor and map files.
- Improve Jetpack Compose sample.
v2.0.0rc1 - November 10, 2023
Updated
- Brand new version of VisioMoveEssential !
- Updated VisioMove, now using [v3.0.0beta8].
- Improve stability when using multiple views.
- Fixes memory leaks.
- Fixes on POI APIs.
- Optimize resource management.
v2.0.0beta5 - September 29, 2023
Updated
- Brand new version of VisioMoveEssential !
- Updated VisioMove, now using [v3.0.0beta8].
v2.0.0beta4 - June 29, 2023
Updated
- Brand new version of VisioMoveEssential !
- Updated VisioMove, now using [v3.0.0beta5].
v1.27.1 - April 12, 2022
Updated
- All the SDK resources are now prefixed with vme_ and strings are prefixed with VME.
- Updated VisioMove, now using [v2.1.38].
Fixed
- Fixed an issue that caused a memory leak when calling unloadMap().
- Fixed some thread and memory issues that causes the app to crash.
- Fixed an issue that caused a web view to not load correctly when its setting "setJavaScriptEnabled" was set to true.
- Fixed an issue that caused an overlay view not being able to be closed while a routing is displayed.
- Fixed an issue that caused computeRoute(VMERouteRequest,VMEComputeRouteCallback) not working after a previous route was cancelled before it was displayed.
v1.27.0 - November 02, 2021
Added
- Added new api fetchCustomData(VMECustomDataRefreshCallback) to fetch online the custom data.
- Added new api getCustomData() to get the custom data.
Updated
- The places labels will not appear above buildings and walls.
v1.26.3 - September 03 2021
Fixed
- Fixed an issue that caused a crash when the VMEMapView parent view was detached from window and then reappear.
v1.26.2 - August 26 2021
Fixed
- Fixed memory leak that occurred.
- Fixed an issue that caused route recalculation to be delayed.
- Fixed some issues that caused route recalculation to fail.
v1.26.1 - March 11 2021
Added
- Possibility to customise the colours of the building pins via the theme file.
Fixed
- Fixed an issue that forced dark mode on the building pins when the phone settings enable dark mode.
- Fixed an issue that forced light mode on theme when only 'useSystemAsDefault':true was used in the theme file.
v1.26.0 - March 08, 2021
Added
- Allows the integrators to handle the colorisation of the theme, markers and icons within the SDK.
- The new theme system can also handle dark and light mode, for system colors only. Dark mode is only available from Android 10 and above. Dark/Light mode system is not customisable by integrators. Dark mode can be enabled in the theme file. Dark/Light mode will work along with the settings of the phone. There is currently no API to control directly the dark/light mode.
Fixed
- Fixed an issue that caused the performance being reduced when moving the camera.
- Fixed issues that caused the selector view not being updated correctly when switching buildings.
- Fixed issues that caused the selector view not being displayed correctly in old devices with a soft navigation bar.
- Fixed issues that caused the selector view list of floors not being displayed correctly in old devices.
- Fixed an issue that caused a map not loading correctly after using deleteCachedMap(String) with assets path
Migration
- This note concerns only the integrators overriding the SDK icons and markers. Custom icons and markers will now need to be only using 3 colors : Red->#ff0000, Green->#00ff00, Blue->#0000ff. We use red as stroke color, green as foreground color and blue as background color. Please see the changing resources section in the FAQ for more details.
- All icons and markers are impacted by the new design.
- The previous routing markers (vme_marker_track_base_current, vme_marker_track_base_past and vme_marker_track_base_future) are now merged in only one marker called : vme_marker_track_base
- The previous compass icons (vme_icon_compass_enabled, vme_icon_compass_disabled) are now merged in only one icon called : vme_icon_compass
v1.25.2 - January 18, 2021
Fixed
- Fixed an issue that made the search view keep displaying/hiding the keyboard for some devices.
v1.25.1 - January 05, 2021
Updated
- Updated VisioMove, now using [v2.1.37]:
- Added support for "persistent" models. It's now possible, within VisioMapEditor, to set the visibility attribute of a model to "force visible". Doing this will ensure the model is always visible when its layer is visible.
Fixed
- Fixed an issue that made the SDK crash when the MapView was paused and resumed while camera stats logging was enabled.
v1.25 - December 18, 2020
Added
- Added new API to that allows the integrator to know what caused the camera's most recent move:
- getCameraMoveReason()
Updated
- Updated VisioMove, now using [v2.1.36]:
- Fixed an issue where the cancel event wasn't being handled. This caused the map to freeze in some scenarios.
Fixed
- Fixed a selector view behavior which caused the camera to move when changing floors in the currently focused building.
- Fixed an issue that caused some UI elements to not respect the device's safe area.
- Fixed an issue that caused the building's model to return to the ground after having clicked it or opened it via the selector view.
v1.24 - November 23, 2020
Added
- Added new listener, VMECameraListener. Register with setCameraListener(VMECameraListener) to be notified of camera events.
- Added a new API, getCameraContext() to retrieve the camera's current context.
- Added a new method, getTarget() to get the map bundle's target name.
Updated
- Updated the minSdkVersion from Android API level 15 to 17. Please see migration notes for more details.
- Updated the below objects to be immutable:
- Updated building markers to be less obtrusive within the map.
Fixed
- Fixed support for Right To Left (RTL) languages.
Migration
- In the project's build.gradle, the minSdkVersion will need to be set to at least Android API level 17 (Jelly Bean / 4.2.x).
v1.23 - October 6, 2020
Added
- Added new APIs for showing/hiding the compass heading marker:
Updated
- Updated VisioMove, now using [v2.1.35].
- Updated the wait duration before displaying the navigation items. The navigation items are now displayed as soon as they are generated. Previously there was a time delay of 1.5 seconds.
v1.22 - September 18, 2020
Added
- Added new methods to VMESegment
Updated
- Updated resource names with a "vme_" prefix to avoid potential conflicts with app resources.
v1.21 - July 6, 2020
Added
- Added a new API deleteCachedMap(String) for deleting a cached map thanks to an identifier (map path or map hash).
- Added a new API getCachedMapDescriptor(String) in order to retrieve a map descriptor by an identifier (map path or map hash).
- Added a new API getDataSDKVersion() for retrieving the data version of the SDK.
Updated
- Updated the resolution of the location accuracy circle so it doesn't appear so pixelated when stretched.
Fixed
- Fixed an issue where location tracker button and compass button appeared too high in the view when the map has just opened and then popped to their right places.
- Fixed an issue that occasionally prevented a recently published map from being downloaded by the SDK.
- Fixed an issue when the main thread was occasionally overloaded when loading instructions.
v1.20 - May 20, 2020
Updated
- Updated the SDK to support the best practices of user interface design proposed by material design .
- Updated the map view layout to better support the device's display cutouts.
-
Updated VisioMove, now using [v2.1.33]:
- Bug fixes.
Fixed
- Fixed an issue where remote icons were sometimes associated with the incorrect place within the search view.
- Fixed an issue where the map's movement was erratic after a fling gesture. This issue was noticeable on maps containing several buildings.
- Fixed an issue where queryPlaces(VMEPlaceFilter, VMEPlaceFilterCallback) caused the SDK to crash.
v1.19 - March 11, 2020
Warning
This version breaks backwards compatibility with previous versions. Please follow the migration notes below when updating the SDK.
Added
- Added a new API setFocusOnMap() for setting the focus on the map.
- Added a new API showPlaceInfo(String) in order to show a place info view.
- Added a new API setNavigationHeaderViewVisible(boolean) for hiding/showing the navigation header bar.
- Added a new API getNavigationHeaderViewVisible(): in order to know wether the navigation header bar is visible.
-
Added a new API setLocationTrackingMode(VMELocationTrackingMode): for setting the location tracking mode.3 options :
- VMELocationTrackingMode.NONE : no location tracking
- VMELocationTrackingMode.CUSTOM : custom location tracker provided by the integrators
- VMELocationTrackingMode.FOLLOW : location tracker provided by the SDK
- Added a new API getLocationTrackingMode() for getting the current location tracking mode.
-
Added a new API setLocationTrackingButtonToggleModes(List
) : for setting the the location tracking modes handled by the VME location tracker button - Added a new API getLocationTrackingButtonToggleModes() for getting the the location tracking modes handled by the VME location tracker button.
- Added a new location tracking mode listener, VMELocationTrackingModeListener. Register with setLocationTrackingModeListener(VMELocationTrackingModeListener) to be notified of events.
Updated
- Updated the "location tracking invalid" image for the location tracking button. A question mark is now displayed until the SDK receives a valid location from updateLocation(VMELocation).
Fixed
- Fixed an issue where the location tracker sometimes wouldn't stop tracking the location updates after a tap event occurred on the map.
Migration
-
Follow the below steps to migrate from v1.18 to v1.19 (estimated migration time - 5min):
- Download and update VisioMoveEssential.aar (v1.19) in your project.
- Verify that you have a clean workspace (commit any changes in progress).
- Close Android Studio, if open.
- Open a shell terminal and @c cd to the parent project directory.
- Download and run the following script from the terminal.
-
For the curious, in v1.19 we relocated some classes. The above script goes through the directories recursively and renames the changed packages and classes:
#Within the package
VMEComputeRouteCallback #Listeners interfaces.VMEBuildingListener -> listeners.VMEBuildingListener interfaces.VMELifeCycleListener -> listeners.VMELifeCycleListener interfaces.VMEMapListener -> listeners.VMEMapListener interfaces.VMEPlaceListener -> listeners.VMEPlaceListener #Callbacks interfaces.VMEAnimationCallback -> callbacks.VMEAnimationCallback interfaces.VMEComputeRouteInterface.ComputeRouteCallback -> callbacks.VMEComputeRouteCallback interfaces.VMEPlaceInterface.PlaceFilterCallback -> callbacks.VMEPlaceFilterCallback interfaces.VMESearchViewInterface.SearchViewCallback -> callbacks.VMESearchViewCallback #Enums model.VMEAnchorMode -> enums.VMEAnchorMode model.VMEViewMode -> enums.VMEViewMode interfaces.VMEComputeRouteInterface.ManeuverType -> enums.VMEManeuverType interfaces.VMEPlaceInterface.PlaceAltitudeMode -> enums.VMEPlaceAltitudeMode interfaces.VMEPlaceInterface.PlaceAnchorMode -> enums.VMEPlaceAnchorMode interfaces.VMEPlaceInterface.PlaceDisplayMode -> enums.VMEPlaceDisplayMode interfaces.VMEComputeRouteInterface.RouteDestinationsOrder -> enums.VMERouteDestinationsOrder interfaces.VMEComputeRouteInterface.RouteRequestType -> enums.VMERouteRequestType #Models model.VMECategory -> models.VMECategory model.VMELocation -> models.VMELocation model.VMEPlace -> models.VMEPlace model.VMEPosition -> models.VMEPosition model.VMESceneContext -> models.VMESceneContext interfaces.VMEMapInterface.CameraDistanceRange -> models.VMECameraDistanceRange interfaces.VMEMapInterface.CameraHeading -> models.VMECameraHeading interfaces.VMEMapInterface.CameraPitch -> models.VMECameraPitch interfaces.VMEMapInterface.CameraUpdate -> models.VMECameraUpdate interfaces.VMEMapInterface.CameraUpdate.Builder -> models.VMECameraUpdateBuilder interfaces.VMEMapInterface.SceneUpdate -> models.VMESceneUpdate interfaces.VMEPlaceInterface.VMEPlaceFilter -> models.VMEPlaceFilter interfaces.VMEPlaceInterface.VMEPlaceOrientation -> models.VMEPlaceOrientation interfaces.VMEPlaceInterface.VMEPlaceSize -> models.VMEPlaceSize interfaces.VMEPlaceInterface.VMEPlaceVisibilityRamp -> models.VMEPlaceVisibilityRamp interfaces.VMEComputeRouteInterface.RouteRequest -> models.VMERouteRequest interfaces.VMEComputeRouteInterface.RouteResult -> models.VMERouteResult interfaces.VMEComputeRouteInterface.Segment -> models.VMESegment
v1.18 - February 4, 2020
Added
- Added a new API mapDidReceiveTapGesture(VMEMapView, VMEPosition) : listener for monitoring tap event on map and gives lat/lon position.
- Added a new API setStatisticsTrackedPlaceIDs(List<String>) : in order to track POI position in statistics module.
-
Added a new API distanceRange for changing the camera distance range. 4 options :
- Keep current distance Range newCurrentAltitudeRange()
- Reset to default distance range (set in VisioMapEditor) newDefaultAltitudeRange
- Set a new Altitude range for the camera newAltitudeRange(double, double)
- Set radius range for the camera newRadiusRange(double, double)
-
Added a new API pitch for changing the camera pitch. 3 options :
- Keep current pitch newCurrent()
- Reset to default pitch (set in VisioMapEditor) newDefaultPitch()
- Set a new pitch newPitch(double)
- Added a new possible target for the camera builder to take CAMERA_FOCAL_POINT : for keeping the current camera focal point during a pitch/heading/distanceRange animation.
Fixed
- Fixed the performance issue during camera animation. The UI is not blocked anymore during animations.
Migration
-
setMinAltitude(Double) and setMaxAltitude(Double) have been deprecated and are replaced with distanceRange.
// Old code VMEMapInterface.CameraUpdate lUpdate = new VMEMapInterface.CameraUpdate.Builder() .setMinAltitude(10) .setMaxAltitude(100) .build(); mMapView.updateCamera(lUpdate); // New code (replaces above) VMEMapInterface.CameraUpdate lUpdate = new VMEMapInterface.CameraUpdate.Builder() .setDistanceRange(VMEMapInterface.CameraDistanceRange.newAltitudeRange(10,100)) .build(); mMapView.updateCamera(lUpdate);
v1.17.3 - September 25, 2019
Updated
- Updated the project to use the original support library APIs instead of AndroidX. AndroidX was original introduced in the previous release v1.17.2 but unfortunately created problems for some integrators.
v1.17.2 - August 30, 2019
Updated
-
Updated VisioMove, now using [v2.1.28]:
- Fixed an issue that caused setPlaceColor to miss some color updates when called during a layer change.
- Updated the SDK to use AndroidX which replaces the original support library.
Fixed
- Fixed an issue where an VMECameraUpdate's min/max altitudes were being overridden when the target contains either a single VMEPosition or a place that's associated with an icon.
- Fixed an issue where the navigation view might disappear when closed and opened quickly.
v1.17.1 - July 15, 2019
Fixed
- Fixed a crash that would occur when generating a route if the application's context didn't come from android.app.Activity. For example React Native.
v1.17 - July 11, 2019
Added
- Added an array of VMESegment to VMERouteResult object. The segments help describe the route in more detail, including the route path and maneuver type.
- Added new listener, VMEBuildingListener. Register with setBuildingListener(VMEBuildingListener) to be notified of building events.
Fixed
- Fixed a crash that occurred when using certain API's before the map had fully loaded.
- Fixed an issue where the manipulator would perform sluggishly. This was noticeable on maps containing several buildings.
- Fixed a crash that would occur if an invalid VMEPosition was passed to addPlace(String, Uri, JSONObject, VMEPosition, VMEPlaceSize, VMEPlaceAnchorMode, VMEPlaceAltitudeMode, VMEPlaceDisplayMode, VMEPlaceOrientation, VMEPlaceVisibilityRamp).
- Fixed an issue where the VMEPlaceDisplayMode parameter passed to addPlace(String, Uri, JSONObject, VMEPosition, VMEPlaceSize, VMEPlaceAnchorMode, VMEPlaceAltitudeMode, VMEPlaceDisplayMode, VMEPlaceOrientation, VMEPlaceVisibilityRamp) wasn't being taken into account.
v1.16 - June 14, 2019
Added
- Added a new API getPlacePosition(String) for retrieving a place's center position.
- Added a new API getPlaceBoundingPositions(String) for retrieving a place's bounding positions.
Updated
- Updated the recompute route when lost algorithm to be more intelligent. The route will only get recomputed if there is a "better" alternative to the current route. addPlace(String, Uri, JSONObject,VMEPosition, VMEPlaceSize,VMEPlaceAnchorMode,VMEPlaceAltitudeMode, VMEPlaceDisplayMode, VMEPlaceOrientation,VMEPlaceVisibilityRamp).
Fixed
- Fixed a crash that occurred when closing the route setup view.
- Fixed an issue where a previous navigation may incorrectly be displayed within the map.
- Fixed warning "Zip path traversal vulnerability" that appeared during submission to Google Play.
v1.15 - April 04, 2019
Added
- Added a new API setPlaceColor(Map<String, Integer>) for changing the color of several places in one call.
- Added a new API resetPlaceColor(List<String>) for reseting the color of several places in one call.
Updated
-
Updated VisioMove, now using [v2.1.27]:
- Improved performance when setting place color.
Fixed
- Fixed a crash that occasional occurred after calling unloadMap().
v1.14 - March 28, 2019
Added
- Added two new APIs that provide control over what part of the overlay view is anchored to the map, using VMEAnchorMode
Updated
- Updated the navigation's change floor maneuver markers:
- now camera facing (previously was flat on the ground).
- has an associated animated label that indicates the floor to change to.
- Updated the following "equal" methods to be more tolerant of double precision issues:
Fixed
- Fixed a crash that occurred when the camera was animated to the outside without first having a focused building.
Migration
-
VisioMoveEssential now uses constraints to layout some of it's views. If you don't already then you will need to add the following line to your project's gradle dependencies files
dependencies { implementation 'com.android.support.constraint:constraint-layout:1.1.3' ... }
v1.13.2 - February 22, 2019
Updated
-
Updated the VMEMapView.updateLocation(VMELocation) so that it filters unnecessary location updates. A location update is filtered if:
- it's received less than a second since the previous update
- it's the same as the previous update
- it falls outside of the map's limits
Fixed
- Fixed some thread and memory related issues that would cause the SDK to occasionally crash.
v1.13.1 - January 31, 2019
Fixed
- Fixed an issue where the navigation was being cancelled when a place is selected and the VMEPlaceListener.mapDidSelectPlace(VMEMapView, String, VMEPosition) listener was returning true.
- Fixed a crash that happens when the map bundle contains no localisation.
- Fixed an issue where after calling removeOverlayView(String), the overlay view was sometimes not being removed from the map.
v1.13 - December 21, 2018
Added
- Added new API, that allows the map's style to be customized. Currently, it provides VMEMapView.setMapFont(String) to allow the map's font to be modified. This might be desirable for a couple of reasons; firstly, to change the style of the map and secondly to support a character set that isn't support by default (for example Simplified Chinese characters).
- Added support for country codes (or region tags) within the map bundle's localisation. It's now possible to represent the linguistic variations associated with a language. For example; zh-Hans (Chinese, Simplified) and zh-Hant (Chinese, Traditional).
Updated
- Updated the language resolution strategy to better reflect the Android strategy. This provides more robust and improved language fallback options.
Migration
-
The method listeners.VMELifeCycleListener.mapReadyForPlaceUpdate(VMEMapView) has been deprecated and is replaced with listeners.VMELifeCycleListener.mapDidInitializeEngine(VMEMapView).
// Old code private VMELifeCycleListener mLifeCycleListener = new VMELifeCycleListener() { @Override public void mapReadyForPlaceUpdate(VMEMapView mapView) { // Do stuff } }; // New code (replaces above) private VMELifeCycleListener mLifeCycleListener = new VMELifeCycleListener() { @Override public void mapDidInitializeEngine(VMEMapView mapView) { // Do stuff } };
v1.12.1 - December 14, 2018
Updated
-
Updated VisioMove, now using [v2.1.26]:
- Fixed manipulator issue where touch events were incorrectly created during zoom gestures.
- Fixed handling of empty layers.
- Updated documentation to indicate that createLocationFromLocation(Location) and createPositionFromLocation(Location) will return null if called before VMELifeCycleListener.mapDataDidLoad().
Fixed
- Fixed an issue where the statistic parameters weren't being taken into consideration when read from the app parameters.
- Fixed several crashes which occurred when the navigation is started and stoped rapidly several times.
- Fixed a crash that occurs occasional when adding a VMEOverlayViewInterface within VMELifeCycleListener.mapDataDidLoad(VMEMapView).
- Fixed an issue where the camera wasn't zooming on selected icons.
- Fixed an issue where if you perform a search, select a category, cancel the search and re-open the search, there was no way to remove the selected category.
- Fixed a crash when a route is computed using the same position for the origin and destination.
- Fixed a crash when calling queryPlaces(VMEPlaceFilter, VMEPlaceFilterCallback).
v1.12 - October 12, 2018
Added
- Added new life cycle listener, VMELifeCycleListener. Register with setLifeCycleListener(VMELifeCycleListener) to be notified of these events.
- Added new place listener, VMEPlaceListener. Register with setPlaceListener(VMEPlaceListener) to be notified of place events.
Updated
- Updated VMEMapListener so that it's more aligned with events driven from VMEMapView. A lot of the methods that were previously in this interface have been relocated to one of the new listeners mentioned above. See their deprecated notice or the migration notes below for more info.
- Updated the SDK to be more tolerant of where descriptor.json is located within the map bundle. Previously it needed to be in the root directory, now it can be anywhere within the directory hierarchy.
- Updated the following model objects so their toString() can be used for more effective logging:
- Updated the camera update mechanism to better handle floor IDs. When a floor doesn't have an associated surface within the map, then the building surface will be used to determine camera focus.
- Updated the selector view behavior so that it's building or floor menu isn't closed automatically when the location tracker is enabled.
- Updated the connected floor behavior so that when changing buildings, the connected floor of the new building remains in focus. Previously, in this scenario, the default floor was given focus.
Migration
-
Certain methods were relocated from VMEMapListener. Please see the migration hints below:
-
Relocate VMEMapListener.mapDidSelectPlace(VMEMapView, String, VMEPosition) to VMEPlaceListener.mapDidSelectPlace(VMEMapView, String, VMEPosition)
// Old code private VMEMapListener mapListener = new VMEMapListener() { // Relocate mapDidSelectPlace @Override public boolean mapDidSelectPlace(VMEMapView mapView, String placeId, VMEPosition position) { // ... return true; } }; mapView.setMapListener(mapListener); // New code (replaces above) private VMEPlaceListener placeListener = new VMEPlaceListener() { @Override public boolean mapDidSelectPlace(VMEMapView mapView, String placeID, VMEPosition position) { // ... return true; } }; // Register the place listener with the map view. mapView.setPlaceListener(placeListener);
- Relocate VMEMapListener.mapReadyForPlaceUpdate(VMEMapView) to VMELifeCycleListener.mapReadyForPlaceUpdate(VMEMapView).
-
Relocate VMEMapListener.mapDidLoad(VMEMapView) to VMELifeCycleListener.mapDidLoad(VMEMapView).
// Old code private VMEMapListener mapListener = new VMEMapListener() { // Relocate mapReadyForPlaceUpdate and mapDidLoad @Override public void mapReadyForPlaceUpdate(VMEMapView mapView) { // ... } @Override public void mapDidLoad(VMEMapView mapView) { // ... } }; mapView.setMapListener(mapListener); // New code (replaces above) private VMELifeCycleListener lifeCycleListener = new VMELifeCycleListener() { @Override public void mapReadyForPlaceUpdate(VMEMapView mapView) { // ... } @Override public void mapDidLoad(VMEMapView mapView) { // ... } }; // Register the life cycle listener with the map view. mapView.setLifeCycleListener(lifeCycleListener);
-
Relocate VMEMapListener.mapDidSelectPlace(VMEMapView, String, VMEPosition) to VMEPlaceListener.mapDidSelectPlace(VMEMapView, String, VMEPosition)
v1.11 - September 14, 2018
Updated
-
Updated VisioMove, now using v2.1.25:
- Simple support for 10+ touches (supernumerary touches are ignored).
- Updated the default behavior of the accessible route button to be disabled by default.
Fixed
- Fixed a crash when the mapPath is assigned an empty string.
- Fixed an issue where VMEPosition's internal state was becoming incoherent. The deprecated buildingID and floorID getter/setters have been completely removed. Please use getScene() and setScene(VMESceneContext) instead.
- Fixed an issue where the camera occasionally didn't focus on the start of the route.
- Fixed an issue where the map would freeze when calling setPlaceColor(String, \@ColorInt int) or resetPlaceColor(String) many times in a row.
- Fixed an issue where the updated scene may be incorrect when passing invalid target objects to VMECameraUpdate.
v1.10 - July 20, 2018
Added
- Added a new API getPlace(String) that returns a VMEPlace object.
- Added a new API queryAllCategoryIDs() that returns a list of category IDs.
- Added a new API getCategory(String) that returns a VMECategory object.
Updated
- Updated how the map is loaded to improve performance. Maps containing a large number of places will now load much faster.
- Updated the search view behavior so that any changes to place data will automatically be reflected in the list. Previously, it was necessary to change the search text for the modified place data to appear.
Fixed
- Fixed an issue where setPlaceData(String, JSONObject) only worked when the placeID already contained data; either in the map's bundle localisation or via the input method updatePlaceData(JSONObject).
- Fixed a crash that occurs on maps without place localisation.
v1.9.1 - July 5, 2018
Fixed
- Fixed an issue where createLocationFromLocation(Location) and createPositionFromLocation(Location) always returned an outside position, even when the lat,lon coordinates corresponded with a building footprint.
v1.9 - June 29, 2018
Added
- Added new APIs in VMEMapController to encapsulate map bundle methods. It contains a new method setPromptUserToDownloadMap(boolean) for controlling whether the user prompt that requests permission before downloading online map is displayed or not.
- Added new APIS for controlling UI elements. It's now possible to hide the selector view using setSelectorViewVisible(boolean).
- Added VMEMapListener.mapSceneDidUpdate(VMEMapView, VMESceneContext, VMEViewMode) to notify the listener when the map's scene and/or view mode has changed.
- Added the VMESceneContext class to encapsulate the combination of building and floor id.
Updated
- Updated the handling of the back key. There is now a more logical chain of command amongst the subviews when handling the back key.
- Updated the VMEPosition constructor to take a VMESceneContext parameter instead of building and floor IDs. Please see migration notes for more info.
Fixed
- Fixed a crash that occurs when logging statistics after having performed a map reload.
Migration
-
It will be necessary to add an implementation of VMEMapListener.mapSceneDidUpdate(VMEMapView, VMESceneContext, VMEViewMode) to any instances of VMEMapListener.
private VMEMapListener mMapListener = new VMEMapListener() { // ... @Override public void mapSceneDidUpdate(VMEMapView pMapView, VMESceneContext pScene, VMEViewMode pViewMode) {} };
-
The VMEPosition constructor has been updated:
// Old VMEPosition lPosOutside = new VMEPosition(45.74094, 4.88483, 0.0, null, null); // New (replaces the above) VMEPosition lPosOutside = new VMEPosition(45.74094, 4.88483, 0.0, new VMESceneContext());
v1.8.1 - June 7, 2018
Updated
- Updated VisioMove, now using v2.1.21.
Fixed
- Fixed an issue in v1.8 where the "limits" footprint wasn't updating the camera's bounding box.
- Fixed a performance issue when using setPlaceColor(String, \@ColorInt int) and resetPlaceColor(String) on a large number of places.
- Fixed an issue where obsolete files (for example \c _vg_config.xml) within the map bundle may be incorrectly used.
- Fixed a crash that occurs when loading a map who's "outside" has been disabled.
- Fixed an issue where the wrong camera heading was being used when selecting a building from the selector view.
- Fixed a crash that occurs occasionally when adding and removing VMEOverlayView's rapidly from the VMEMapView.
v1.8 - April 27, 2018
Added
- Added a new API for querying places using a place filter, VMEMapView.queryPlaces(VMEPlaceFilter filter, VMEPlaceFilterCallback callback).
Updated
- Updated setPlaceColor(String, \@ColorInt int) and resetPlaceColor(String) so that they also apply to icons and dynamic places.
Fixed
- Fixed an issue where queryAllPlaceIDs() was returning a HashMap instead of a List.
- Fixed a crash when the venue layout contained a building ID that doesn't have a corresponding entity within the map.
- Fixed a crash when VMECameraUpdate is used with an invalid place ID.
- Fixed a crash that was occurring when logging camera statistics.
v1.7.1 - April 18, 2018
Fixed
- Fixed an issue in v1.7 where the map load times improvement hadn't been included.
v1.7 - April 13, 2018
Added
- Added a new API for animating the camera, animateCamera(VMECameraUpdate, float, VMEAnimationCallback). The VMEAnimationCallback parameter can be used to chain animations together.
- Added an animation to the outgoing/incoming floor’s opacity. The animation helps better understand the floor transition.
Updated
-
Updated VisioMove, now using v2.1.20. What's new:
- The camera manipulator now has inertia.
- Map load times improved (Android only).
- Updated the VMECameraUpdate construction. The telescoping constructor pattern has been replaced with a builder pattern. The builder pattern provides a single API for creating a VMECameraUpdate object, while also providing more options. See Migration notes for more detail.
- Updated available APIs. All items deprecated since v1.2 have been removed.
Fixed
- Fixed an issue where using the base constructor for VMERouteRequest made adding destinations impossible.
Migration
-
The way that VMECameraUpdate objects are created has been improved. Please see below for an example of the modification:
// Old List <Object> lTargets = Arrays.asList(lPos1, lPos2, lPos3); VMEMapInterface.CameraUpdate lCameraUpdate = VMEMapInterface.CameraUpdate.newPositionsHeadingPadding( lTargets, new VMECameraHeadingCurrent(), 50, 50, 50, 50); // New (replaces the above) List <Object> lTargets = Arrays.asList(lPos1, lPos2, lPos3); VMEMapInterface.CameraUpdate lCameraUpdate = new VMEMapInterface.CameraUpdate.Builder() .setTargets(lTargets) .setHeading(new VMECameraHeadingCurrent()) .setPaddingTop(50) .setPaddingBottom(50) .setPaddingLeft(50) .setPaddingRight(50) .build();
v1.6.1 - February 28, 2018
Added
- Added skywalk/ramp management. On multi-building maps, buildings connected to current floor by skywalks or ramps will now be automatically activated and the connected floor will be displayed.
Updated
-
Updated the below listener methods so they're now called within the main thread (for more info, please see the migration guide):
- VMEMapListener.mapReadyForPlaceUpdate(VMEMapView) - previously called in a worker thread.
- VMEMapListener.mapDidLoad(VMEMapView) - previously called in the GLThread.
- Updated the camera's behavior. It now ignores any requests to move outside of it's boundaries. Previously, the camera would animate to a requested position that was outside of it's allowed boundaries, then it would immediately correct itself by jumping back within it's boundaries.
- Updated the VMEMapView documentation to indicate at what point in the map life cycle these methods can be called.
Fixed
- Fixed an issue where, in certain circumstances, the place info view's description wasn't being updated to correctly reflect the selected place.
- Fixed an issue where "null" was appearing in the place info view when the place's description was empty.
- Fixed a crash that occurred when passing an invalid building ID to VMECameraUpdate.newViewModeHeadingBuildingID(VMEViewMode, CameraHeading, String).
- Fixed a crash that would eventually occur if the updateLocation(VMELocation) method is being called regularly and the user has activated the location tracker button.
Migration
-
If previously there was specific code run on the UI Thread within an VMEMapListener method, then it's no longer necessary because all listener methods are now called within the main thread.
For example, the following code:
@Override public void mapDidLoad(VMEMapView pMapView) { // UI update must be carried out in UI thread. getActivity().runOnUiThread(new Runnable() { @Override public void run() { // Enable the buttons mFragment.findViewById(R.id.create_route_from_place).setEnabled(true); mFragment.findViewById(R.id.create_route_from_location).setEnabled(true); } }); }
@Override public void mapDidLoad(VMEMapView pMapView) { // Enable the buttons mFragment.findViewById(R.id.create_route_from_place).setEnabled(true); mFragment.findViewById(R.id.create_route_from_location).setEnabled(true); }
v1.6 - January 31, 2018
Added
- Added new APIs to VMEMapView to provide more control over which modalities and attributes are excluded when a route is requested.
Updated
-
Updated the route summary text, displayed within the route setup view, to improve it's readability. Improvements include:
-
Displayed text is now more natural. Here are some examples:
- 0mins, 28m => 1 min (28m)
- 66mins, 10561m => 1 h 6min (10.6 km)
- The units are now localized. Please see migration notes below for how to customize.
- The color of the distance indication within the route summary, for example "(10.6 km)", has been assigned the theme's secondary color. The idea is to draw the user's attention more towards the time indication.
-
Displayed text is now more natural. Here are some examples:
- Updated the current navigation segment so it's arrows are animated.
Fixed
- Fixed a crash which occurred when the map bundle didn't contain a vg_app_params.json file.
- Fixed an issue where the camera's minimum altitude (defined within the map bundle's vg_config.xml) was being incorrectly set to zero when the map defines a "limits" footprint.
- Fixed an issue where a cluster of 3D building models that share the same building ID weren't being animated together when entering the building.
Migration
-
If you've customized the localization, then you should add following keys to your version of VisioMoveEssential.strings:
<string name="Unit.Minutes">min</string> <string name="Unit.Hours">h</string> <string name="Unit.Meters">m</string> <string name="Unit.Kilometers">km</string>
v1.5 - December 15, 2017
Added
- Added statistic collection. Collect relevant statistics and upload them to Visioglobe's statistics server for analysis. For information about what statistics can be collected, please see VMEMapView.
Updated
- Updated the bundle updater so that it no longer uses displays Toast messages to the end user.
- Updated the place info view so that it uses a specific stylesheet (visioglobe.css) for the web content. The stylesheet can be found within the VisioMoveEssential.aar archive. It's possible to open the archive and personalise the stylesheet.
Fixed
- Fixed a crash which occurred when attempting to update the camera when there is no focused building.
- Fixed an issue where the heading passed to VMEPlaceOrientation.newPlaceOrientationFixed(float) wasn't been taken into consideration.
- Fixed an occasional issue where the SDK would arrive in an endless state trying to enter the map.
- Fixed an issue in the OverlayViewDemoFragment sample code where the overlay's place id sometimes wasn't being updated.
Migration
-
If you've customized the localization, then you will need to update your version of strings.xml:
<string name="BundleUpdater.Internet">Unable to connect to map server. Please check your network connection and try again.</string>
v1.4.3 - October 20, 2017
Added
-
Added more control over the behavior of the camera driven explorer. It's now possible to:
- define whether the camera driven explorer is enabled/disable. If disabled, then panning or zooming the camera will not result in a change of mode or building. This means that to enter a building, the end user may either touch the building or select it from the selector view.
- define the camera's distance threshold where the mode toggles between floor and global.
- define whether a building can be explored into using the camera.
- define whether a building can be explored from using the camera.
- Added more control over the camera's bounding box. If a footprint with the id "limits" is defined within the map, then the camera's focus point will be restricted to within the calculated bounding box of this surface.
Updated
- Updated VisioMove, now using v2.1.18.
- Updated some of the camera driven explorer's existing behavior:
- previously, when the camera was below a certain distance threshold, the mode was always set to floor. Now, the camera must be below the distance threshold AND the camera's focus point must fall within the building's footprint.
- it's now possible, when viewing an underground floor, to zoom out to global mode.
Fixed
- Fixed an issue where the application would close when the user presses the back button within the search view.
- Fixed an occasional crash that occurred during a routing.
- Fixed a crash that occurs if VMEMapView.dispose() is called while the map is still loading.
- Fixed a rare crash that occurs when the user attempts to modify the origin/destination(s) of an ongoing navigation and then finally attempts returns to the navigation using the back button.
v1.4.2 - October 4, 2017
Added
- Added Recompute route when lost feature. When the user is a certain lost distance from the route (defined within vg_app_params.json), the route will be recalculated.
Updated
- Updated the font DPI to be more adaptive to the devices DPI. This results in smoother text rendering within the map.
- Updated the splash view's progress bar style.
- Updated the height of the navigation list view so it's less likely to extend below the bottom selector view.
- Updated the documentation to mention that the VMEMapView must remain visible while the map is loading, otherwise it will remain in the loading state.
- Updated the documentation to talk about the new "Automatically generate place names" feature available within VisioMapEditor's Edit places localization view.
Fixed
- Fixed a crash that occurred if the VMEMapView object has it's onResume() or onPause() methods called before it's loadMap() method.
- Fixed an issue where the camera would zoom too close to the map whilst clicking next instruction during a navigation.
Migration
-
If you've customized the localization, then you will need to update your version of strings.xml:
<string name="NavigationView.GeneratingRoute">Displaying route</string> <string name="NavigationView.RegeneratingRoute">Refreshing route</string> <string name="Location.YourLocation">Your location</string>
v1.4.1 - September 14, 2017
Updated
- Updated the minimum supported android version to API Level 15
- Updated the behavior so that turn instructions are now also generated for datasets that do not contain intersection nodes. To reduce the number of turn instructions generated, you can use intersection nodes within VisioMapEditor.
-
Updated the selector view so that:
- the building and floor lists will always appear on top of other views, in particular the instruction list view.
- the building and floor lists are hidden after an updateCamera request.
- there is a border around the building and floor lists.
- selector buttons are no longer forced to upper case.
- the building and floor button caret indicating the availability of a list is hidden if there is only one item.
- Updated the navigation view so that more space is given to the instruction text. This should reduce the number of truncated instructions.
Fixed
- Fixed a the compass data source that was sometimes 90° out of phase (i.e. pointing East rather than North).
- Fixed a crash that occurs on some devices when the user activates the location tracker.
- Fixed the bundle updater so that it validates the map bundle before trying to access it.
- Fixed the bundle updater so that if there is a cached version of the map and the user goes offline before loading the map, then the map will still be available.
- Fixed an issue where navigation instructions were only updating if the current location was on the ground floor.
- Fixed an issue where the navigation instructions would sometimes enter a toggle fight between two instructions.
- Fixed an issue where the user's location marker would sometimes "bounce" after receiving a new location update.
Migration
-
You will need to update the minSDKVersion in your application gradle file if it's currently below 15. To use VisioMove Essential it must be at least 15.
defaultConfig { ... minSdkVersion 15 ... }
v1.4 - July 12, 2017
Added
- Added new API queryAllPlaceIDs().
Updated
- Updated VisioMove, now using v2.1.16.
- Updated some french locale
- Updated the start up process to reduce the "flash" that occurs when the map is first displayed to the user.
- Updated the navigation instructions to read "Arrive at waypoint" or "Arrive at destination" instead of simply "Continue".
- Updated the navigation instructions to be coherent between iOS and Android.
- Updated the navigation instructions to better handle VMEPosition start and waypoint objects.
- Updated the behavior of the camera when focusing on POI's that don't have bounding boxes (icons and models). The camera is given a maximum height limit to ensure the POI is easily visible.
- Updated the FAQ with a new section, @ref updateLocation.
- Updated the demo map bundle (Visio Island) used by the sample.
- Updated the compass to use the Sensor.TYPE_ROTATION_VECTOR sensor when available.
Fixed
- Fixed a crash when VMEMapView.updateLocation(VMELocation) was called before the SDK was ready. Calls to VMEMapView.updateLocation(VMELocation) before the VMEMapListener.mapDidLoad(VMEMapView) will be ignored.
- Fixed a crash in the search view when selecting a category field that contains an empty icon.
- Fixed an issue where building models would sometimes disappear.
- Fixed a crash when calling computeRoute(VMERouteRequest, VMEComputeRouteCallback) with a VMERouteRequest object that contains a place id which hasn't been populated with place data. The route will now fail if there is no associated place data, even if the place id is valid.
- Fixed an issue where the search view button was sometimes being incorrectly hidden.
- Fixed a rare crash that would sometimes occur during a navigation.
- Fixed a crash when attempting to remove an overlay view with an overlay view id that doesn't exist.
- Fixed how dynamic places are handled if they're removed from the map but still referenced within an existing route.
Migration
-
If you've added custom localization, then you will need to also add definitions for the following in the strings.xml file:
<string name="RouteSetupView.PlaceNotAvailable">Place not available</string> <string name="Navigation.Leave">leave</string> <string name="Navigation.ArriveAt">arrive at</string>
v1.3 - April 24, 2017
Added
- Added new interface for updating the camera, VMECameraUpdate.newPositionsHeadingAltitude(VMEPosition, CameraHeading, double, double).
Fixed
- Fixed a crash when attempting to load an invalid icon path associated with a dynamic place.
- Fixed an issue where the map server default wasn't being set if the VMEMapView layout didn't contain an app:mapHash attribute.
- Fixed an issue where the vg_app_params.json and vg_theme.json files from the map bundle, weren't being taken into consideration when the map path is loaded with the "file://" prefix.
- Fixed an issue that caused the selector view text to scroll horizontally.
- Fixed an issue where the RouteSetupView wasn't indicating correctly when the route request was accessible.
Updated
- Updated VisioMove, now using v2.1.15.
- Updated dynamic place icon so they are loaded asynchronously.
- Updated where icons can be accessed from. Now possible to load from drawables and assets. Check out @ref iconPath for more info.
- Updated the handling of the venue locale. If a local is missing for a building/floor, then it will remain empty.
- Updated the order of buildings within the selector view's building list to be the same as on iOS (lower displayIndex's are displayed higher up on the list).
- Updated computeRoute(VMERouteRequest, VMEComputeRouteCallback) to handle concurrent calls.
- Updated the splash view so that it no longer inherits from the color theme.
- Updated the navigation view with some refinements.
- Updated the FAQ with more details on how to theme the VMEMapView. Check out @ref theming for more info.
- Updated how Location objects are treated when passed to createLocationFromLocation(Location). When hasAltitude() returns false, then location will be assumed to be outside, independent of whether it falls within a building's geo-fence.
- Updated the proguard-rules.pro file provided with the sample so that it demonstrates the best practice for obfuscating your application and ensuring that the VisioMove Essential SDK continues to function.
- Updated the behavior of the location tracker. It will continue to keep the current camera altitude, unless it's above 100m, at which point, it will lower it to this height.
v1.2.1 - February 24, 2017
Fixed
- Fixed an issue where the route was being displayed despite computeRouteDidFinish(VMEMapView, VMERouteRequest, VMERouteResult) returning false.
v1.2 - February 17, 2017
Added
- Added new methods to VMERouteRequest to allow position as a destination.
- Added a mechanism to receive the computed route information, via the VMERouteResult object passed to the method computeRouteDidFinish(VMEMapView, VMERouteRequest, VMERouteResult).
- Added new VMELocation object to give more control when integrating a position system easier.
- Added a new attribute, "optionsButtonAvailable", within the vg_app_params.json file. When set, will hide the "Options" button visible from the navigation view.
Updated
- Updated VisioMove, now using v2.1.14.
- Updated VMERouteRequest to accept ids of Dynamic Place objects.
- Updated the documentation style and Visioglobe logo
- Updated the "zoom into building" feature so that it's deactivated when viewing underground floors.
- Updated the route path so the rendering of corners is smoother.
- Updated how legends labels are managed. They will now be coherent within the scene, meaning they will appear behind surfaces that are in front of them within the scene.
- Updated all text fields so they no longer scroll horizontally. Text may now occupy two lines and will end in an eclipse if too long.
- Updated the place info view, so that when there is no place icon, the place name is centered within the view.
- Updated the dynamic place marker so that when it's display mode is set to VMEPlaceDisplayMode.OVERLAY, it will appear above the route markers.
- Updated the route summary within the route setup view to also include route length.
Fixed
- Fixed an issue where the SDK would crash if a building didn't have a footprint surface.
- Fixed an issue where the "waypoint" maneuvre type was appearing incorrectly as "go straight".
- Fixed an issue where the place icon within the place info view wasn't being reset.
- Fixed an issue where the route path and maneuvre icons would sometimes have incorrect z ordering.
- Fixed an issue where the location overlay would sometimes be incorrectly animated.
- Fixed an issue where underground floors were appearing in lego mode. Now underground floors are display individually.
- Fixed an issue where the compass and location tracker buttons were both being enabled when there was no vg_app_params.json file in the map bundle.
- Fixed an issue where the navigation view wasn't being hidden when the "navigationViewAvailable" attribute was set to false in the vg_app_params.json file.
- Fixed an issue where the place names aren't initially displayed in the search view when no categories are defined.
- Fixed a crash when addPlace(String, Uri, JSONObject, VMEPosition, VMEPlaceSize, VMEPlaceAnchorMode, VMEPlaceAltitudeMode, VMEPlaceDisplayMode, VMEPlaceOrientation, VMEPlaceVisibilityRamp) is called within VMEMapListener.mapReadyForPlaceUpdate(VMEMapView). Please see documentation for when it's ok to call this method.
- Fixed an issue where the route setup view wasn't being reset for subsequent route requests.
Migration
-
Creating a route is now more flexible that before. To achieve this the VMEMapView has had a face lift. See below for the code comparisons and for migration hints:
// Old Location lLoc = new Location(LocationManager.GPS_PROVIDER); lLoc.setLatitude(45.7424829); lLoc.setLongitude(4.8800862); lLoc.setAltitude(52); List <String> lDests = Arrays.asList("B4-UL05-ID0032", "B2-LL01-ID0011", "B3-UL00-ID0070"); VMEComputeRouteInterface.RouteRequest lRouteRequest = new VMEComputeRouteInterface.RouteRequest(mAccessibleSwitch.isChecked(), mOptimizeSwitch.isChecked()); lRouteRequest.setOrigin(lLoc); lRouteRequest.addDestinations(lDests); mMapView.computeRoute(lRouteRequest, mRouteCallback);
// New Location lLoc = new Location(LocationManager.GPS_PROVIDER); lLoc.setLatitude(45.7424829); lLoc.setLongitude(4.8800862); lLoc.setAltitude(52); List<Object> lDests = new ArrayList<>(); lDests.addAll(Arrays.asList("B4-UL05-ID0032", "B2-LL01-ID0011", "B3-UL00-ID0070")); VMEComputeRouteInterface.RouteDestinationsOrder lDestOrder = mOptimizeSwitch.isChecked() ? VMEComputeRouteInterface.RouteDestinationsOrder.OPTIMAL : VMEComputeRouteInterface.RouteDestinationsOrder.IN_ORDER; VMEComputeRouteInterface.RouteRequest lRouteRequest = new VMEComputeRouteInterface.RouteRequest(VMEComputeRouteInterface.RouteRequestType.FASTEST, lDestOrder, mAccessibleSwitch.isChecked()); VMEPosition lPosition = RoutingDemoFragment.this.mMapView.createPositionFromLocation(lLoc); lRouteRequest.setOrigin(lPosition); lRouteRequest.addDestinations(lDests); mMapView.computeRoute(lRouteRequest, mRouteCallback);
-
In order to provide information related to a computed route and to provide a mechanism to display or not the route within the map, the VMEComputeRouteCallback has been updated. See below for the changes:
// Old @Override public void computeRouteDidFinish(VMEMapView pMapView, VMEComputeRouteInterface.RouteRequest pRouteRequest) { // ... Toast.makeText(getContext(), "computeRouteDidFinish", Toast.LENGTH_LONG).show(); }
// New @Override public boolean computeRouteDidFinish(VMEMapView pMapView, VMEComputeRouteInterface.RouteRequest pRouteRequest, VMEComputeRouteInterface.RouteResult pRouteResult) { String lRouteDescription = String.format("computeRouteDidFinish, duration: %.0fmins and length: %.0fm", (pRouteResult.getDuration() / 60), pRouteResult.getLength()); Toast.makeText(getContext(), lRouteDescription, Toast.LENGTH_LONG).show(); // returning true will display the route within the map. return true; }
-
When injecting the current position into the map, a VMELocation object should be used rather than a Location object. This provides more control about which building/floor should have focused. Please check the below code to see how the migration is done:
// Old //////// LocationListener @Override public void onLocationChanged(Location location) { // Forward location to the VMEMapView. mMapView.updateLocation(location); }
// New //////// LocationListener @Override public void onLocationChanged(Location location) { // Create VMELocation object from the Location object VMELocation lVMELocation = mMapView.createLocationFromLocation(location); // Forward location to the VMEMapView. mMapView.updateLocation(lVMELocation); }
v1.1.1 - October 13, 2016
Updated
- Updated VisioMove, now using v2.1.13.
Fixed
- Fixed a font issue with the offline version of the documentation.
- Fixed an issue that prevented local place data from being loaded when the map path is referenced using "file://" (instead of "asset://").
- Fixed an issue where the error view wasn't being updated with the map bundle's theme.
v1.1 - August 24, 2016
Added
- Added new api in VMEMapView for customizing and managing places within the map. For example; it's now possible to change a places color and add dynamic places to the map. This interface replaces the deprecated VMEPlaceDataInterface.
- Added new VMECameraUpdate(ArrayList, int, int, int, int, Double) that can be used to move the camera to focus on a particular position.
- Added customizable themes so VisioMove Essential can be coherent with rest of your application. To activate custom themes, you will need a vg_app_theme.json within your map bundle. See the map_bundle_theme.zip within the sample for an example. The icons currently aren't affected by the theme, however they can be modified directly and repackaged.
- Added new API in VMEMapView that provides a mechanism for adding native info views above the map.
- Added new method mapDidSelectPlace(VMEMapView, String, VMEPosition) that notifies when a place has been selected. It also allows the option to provide custom behavior.
- Added handling for place and category icons (defined within the place data) so that remote paths http(s) are handled. The downloaded icons are cached for future use within the application.
Updated
- Updated VisioMove, now using v2.1.10.
- Updated the algorithm that determines the current floor after calling updateLocation(VMELocation) to remove the need to have footprints for maps containing a single building maps and no outside.
- Updated the navigation instruction text.
- Updated animation duration related to camera, layer, and spatials.
Fixed
- Fixed issue where the camera wasn't being updated when requesting to look at a place ID that's associated with an icon.
- Fixed issue where the place icon was appearing too small within the PlaceInfoView.
- Fixed issue where the search view, when opened from the route setup view, had an incorrect title.
- Fixed crash when running on Android devices < Jelly Bean (api 19).
- Fixed issue where the current and future route markers were mixed.
- Fixed issue where the location tracker icon was not being updated to indicate that tracking mode was enabled.
v1.0 - May 13, 2016
Added
- Added new APIs in VMEMapView for connecting a location provider
- When the Search view us opened from the Route Setup view, places that are not routable appear disabled.
- Added mechanism within Route Setup view so the user can to remove waypoints.
- Added management for Android's "back" button.
Updated
- Updated VisioMove, now using v2.1.9.
Fixed
- Fixed issue where the marker pin was appearing when the user selects a place and a route is in progress.
- Fixed issue where the Place Info view was displaying the start route button when the place was not routable.
- Fixed issue where the Navigation view would get waypoint names wrong when using an "optimized" route.
- Fixed issue where the route was not centering on first instruction.
- Fixed issue where the floor/building selector list was appearing behind the Place Info view.
v0.0.3b - March 29, 2016
- First public beta release