VisioMove Essential (Android)  1.27.6
Change Log

v1.27.6 - September 21, 2023

Updated
  • Use a new VisioMove version with color on poi fix

v1.27.5 - August 01, 2023

Updated
  • use same icon as on iOS for selector view on default building

v1.27.5 - August 01, 2023

Updated
  • better GPS example with offset when too far from scene
Added
  • added attribution information in routing results
Fixed
  • better display when floor has no description on floor selector list

v1.27.3 - October 4, 2022

Fixed
  • Fixed recompute route when location is too far from edge.

v1.27.2 - September 15, 2022

  • Updated VisioMove, now using [v2.1.39]:
    • Fixed 3D models display issues
Updated
  • All the SDK resources are now prefixed with vme_ and strings are prefixed with VME.

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 VMEMapView::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 VMEMapView::computeRoute(VMERouteRequest,VMEComputeRouteCallback) not working after a previous route was cancelled before it was displayed.

v1.27.0 - November 02, 2021

Added
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 VMEMapView::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
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
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
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
Updated
  • Updated resource names with a "vme_" prefix to avoid potential conflicts with app resources.

v1.21 - July 6, 2020

Added
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 VMEMapView::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
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 VMEMapView::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):
    1. Download and update VisioMoveEssential.aar (v1.19) in your project.
    2. Verify that you have a clean workspace (commit any changes in progress).
    3. Close Android Studio, if open.
    4. Open a shell terminal and cd to the parent project directory.
    5. 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 <com.visioglobe.visiomoveessential>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
Fixed
  • Fixed the performance issue during camera animation. The UI is not blocked anymore during animations.
Migration
  • models::VMECameraUpdateBuilder::setMinAltitude(Double) and models::VMECameraUpdateBuilder::setMaxAltitude(Double) have been deprecated and are replaced with models::VMECameraUpdateBuilder::setDistanceRange(VMECameraDistanceRange).
    // 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 models::VMECameraUpdate's min/max altitudes were being overridden when the target contains either a single models::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
Fixed

v1.16 - June 14, 2019

Added
Updated
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
Updated
  • Updated VisioMove, now using [v2.1.27]:
    • Improved performance when setting place color.
Fixed

v1.14 - March 28, 2019

Added
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 file
    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

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

v1.12.1 - December 14, 2018

Updated
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 interfaces::VMEOverlayViewInterface within listeners::VMELifeCycleListener.mapDidLoad(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 VMEMapView::queryPlaces(VMEPlaceFilter, VMEPlaceFilterCallback).

v1.12 - October 12, 2018

Added
Updated
  • Updated listeners::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:
    • models::VMEPosition.toString()
    • models::VMESceneContext.toString()
  • 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 listeners::VMEMapListener. Please see the migration hints below:
    • Relocate listeners::VMEMapListener.mapDidSelectPlace(VMEMapView, String, VMEPosition) to listeners::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 listeners::VMEMapListener.mapReadyForPlaceUpdate(VMEMapView) to listeners::VMELifeCycleListener.mapReadyForPlaceUpdate(VMEMapView).
    • Relocate listeners::VMEMapListener.mapDidLoad(VMEMapView) to listeners::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);

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 models::VMEPosition's internal state was becoming incoherent. The deprecated buildingID and floorID getter/setters have been completely removed. Please use models::VMEPosition::getScene() and models::VMEPosition::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 VMEMapView::setPlaceColor(String, @ColorInt int) or VMEMapView::resetPlaceColor(String) many times in a row.
  • Fixed an issue where the updated scene may be incorrect when passing invalid target objects to models::VMECameraUpdate .

v1.10 - July 20, 2018

Added
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

v1.9.1 - July 5, 2018

Fixed

v1.9 - June 29, 2018

Added
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 models::VMEPosition constructor to take a models::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

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 VMEMapView::setPlaceColor(String, @ColorInt int) and VMEMapView::resetPlaceColor(String) on a large number of places.
  • Fixed an issue where obsolete files (for example _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
Updated
Fixed
  • Fixed an issue where VMEMapView::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 models::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
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 models::VMECameraUpdate construction. The telescoping constructor pattern has been replaced with a builder pattern. The builder pattern provides a single API for creating a models::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
Migration
  • The way that models::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):
    • listeners::VMEMapListener.mapReadyForPlaceUpdate(VMEMapView) - previously called in a worker thread.
    • listeners::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 models::VMECameraUpdate.newViewModeHeadingBuildingID(VMEViewMode, CameraHeading, String).
  • Fixed a crash that would eventually occur if the VMEMapView::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 listeners::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);
    }
    });
    }
    becomes:
    @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.
  • 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 models::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
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 models::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, Integrating location services.
  • 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 listeners::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 VMEMapView::computeRoute(VMERouteRequest, VMEComputeRouteCallback) with a models::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, models::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 Place and category icon paths 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 VMEMapView::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 Theme the VMEMapView for more info.
  • Updated how Location objects are treated when passed to VMEMapView::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

v1.2 - February 17, 2017

Added
Updated
  • Updated VisioMove, now using v2.1.14.
  • Updated models::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 models::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 VMEMapView::addPlace(String, Uri, JSONObject, VMEPosition, VMEPlaceSize, VMEPlaceAnchorMode, VMEPlaceAltitudeMode, VMEPlaceDisplayMode, VMEPlaceOrientation, VMEPlaceVisibilityRamp) is called within listeners::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 callbacks::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 models::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
    @Override
    public void onLocationChanged(Location location) {
    // Forward location to the VMEMapView.
    mMapView.updateLocation(location);
    }
    // New
    @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 interfaces::VMEPlaceDataInterface.
  • Added new models::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 listeners::VMEMapListener::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 VMEMapView::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
© 2022 Copyright Visioglobe, All Rights Reserved. View our Privacy Policy