VisioMove Essential (Android)  1.17.3
Change Log

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 interfaces::VMEMapInterface::CameraUpdate's min/max altitudes were being overridden when the target contains either a single model::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

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

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

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 interface, interfaces.VMEStyleInterface that allows the map's style to be customized. Currently, it provides interfaces.VMEStyleInterface.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

v1.12 - October 12, 2018

Added

Updated

  • Updated interfaces::VMEMapListener so that it's more aligned with events driven from interfaces::VMEMapInterface. 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:
    • model::VMEPosition.toString()
    • model::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 interfaces::VMEMapListener. Please see the migration hints below:
    • Relocate interfaces::VMEMapListener.mapDidSelectPlace(VMEMapView, String, VMEPosition) to interfaces::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 interfaces::VMEMapListener.mapReadyForPlaceUpdate(VMEMapView) to interfaces::VMELifeCycleListener.mapReadyForPlaceUpdate(VMEMapView).
    • Relocate interfaces::VMEMapListener.mapDidLoad(VMEMapView) to interfaces::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

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 model::VMEPosition constructor to take a model::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 interfaces::VMEPlaceInterface.setPlaceColor(String, @ColorInt int) and interfaces::VMEPlaceInterface.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

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 interfaces::VMEMapInterface.CameraUpdate construction. The telescoping constructor pattern has been replaced with a builder pattern. The builder pattern provides a single API for creating a interfaces::VMEMapInterface.CameraUpdate 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 interfaces::VMEMapInterface.CameraUpdate 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):
    • interfaces::VMEMapListener.mapReadyForPlaceUpdate(VMEMapView) - previously called in a worker thread.
    • interfaces::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 interfaces::VMEStatisticsInterface 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 interfaces::VMEMapInterface.CameraUpdate.newViewModeHeadingBuildingID(VMEViewMode, CameraHeading, String).
  • Fixed a crash that would eventually occur if the interfaces::VMELocationInterface.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 interfaces::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

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 interfaces::VMEStatisticsInterface.

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 interfaces::VMEPlaceInterface.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 model::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

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, interfaces::VMEMapInterface.CameraUpdate.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 interfaces::VMEComputeRouteInterface.computeRoute(interfaces::VMEComputeRouteInterface.RouteRequest, interfaces::VMEComputeRouteInterface.ComputeRouteCallback) 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 interfaces::VMEMapView. Check out Theme the VMEMapView for more info.
  • Updated how Location objects are treated when passed to interfaces::VMELocationInterface.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 interfaces::VMEComputeRouteInterface.RouteRequest 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 interfaces::VMEPlaceInterface.VMEPlaceDisplayMode.OVERLAY, it will appear above the route markers.
  • Updated the route summary within the route setup view to also include route length.

Fixed

Migration

  • Creating a route is now more flexible that before. To achieve this the interfaces::VMEComputeRouteInterface 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 interfaces::VMEComputeRouteInterface.ComputeRouteCallback 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 model::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 interface interfaces::VMEPlaceInterface 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 method interfaces::VMEMapInterface.CameraUpdate(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 protocol interfaces::VMEOverlayViewInterface that provides a mechanism for adding native info views above the map.
  • Added new method interfaces::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 interfaces::VMELocationInterface::updateLocation(Location) 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 interfaces::VMELocationInterface 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
Visioglobe® 2015-2019