VisioMove-Sample  2.1.3
 All Classes Namespaces Functions Variables Typedefs Enumerations Enumerator Properties Pages
Navigation Example

Sample application demonstrating how to integrate VisioMove into an application.

  1. Objectives
  2. Description
  3. Architecture
  4. Things to try

Objectives

The main objective of the navigation sample is to demonstrate a full featured application which demonstrates the various features of VisioMove.

Description

The navigation sample demonstrates the following functionality:

  • Anchoring a bubble view to a place on the map.
  • Creating a route between different places.
  • Displaying navigation instructions for a computed route.
  • Moving between floors in a multi-floored building.

Architecture

Below is a description of the architecture that has been used for the Visioglobe sample application. This approach may not suit everyones needs, however we've found it to be extremely useful. The first advantage is that it's easier to develop across different platforms. Secondly, it's extremely useful for plugging different functionality into the application for testing and demonstration purposes.

The architecture of the Navigation Sample can be broken into the following components.

VgMyMainActivity

This component is responsible for creating the VgMySurfaceView, the VgMyBasicApplicationController and any Blocks that are desired to be associated with the VgMyBasicApplicationController.

Some blocks have a dependency on modules. For example a block which creates a route will not be very effective if the routing module isn't available. Therefore it's generally a good idea for the VgMyMainActivity to verify that a dependent module is available before creating the block and registering it with the VgMyBasicApplicationController.

VgMySurfaceView

The surface view which provides the window to VisioMove.

VgMyBasicApplicationController

The component controls the communication between the registered Blocks and VisioMove

Blocks

A block represents a set of functionality that is recognized by the VgMyBasicApplicationController. The blocks must implement an interface in order to be registered with the VgMyBasicApplicationController. Once registered, the VgMyBasicApplicationController will use that interface to communicate with the block.

For simplicity some blocks which are available in the sample may not be mentioned below.

VgMyBubbleView

A bubble view can be displayed and associated with a place within the map.

VgMyNavigationHelper

Provides a mechanism to create a navigation item.

VgMyRouteHelper

Provides a mechanism to create and display a route on the map.

VgMyInsructionView

Displays an instruction view which is associated with a navigation.

VgMyStackedLayerAndCameraHandler

Provides a vertical animation for moving between layers within a map. There are two types of views. The first is a global view which provides an overview of all the possible layers. Then there is a detailed view, which zooms in on one particular view.

VisioSampleClassDiagram.jpg

Start up

The below diagrams show the work flow for the start up of the sample applications. The goal of start up is to ensure that the map bundle used by the application is the latest version available on the map server. If a newer version of the map bundle is available, the application will prompt the user if they would like to download the new version of the map bundle.

Android

VisioSampleAndroidStartupDiagram.jpg

iOS

VisioSampleIosStartupDiagram.jpg

Things to try

The number of customizations that can be performed to the Sample Application are endless. However, we've provided a list of common things the users generally like to customize.

  • The look of instruction view can be customized by making changes within the VgMyInsructionView block. Customize the instructions text displayed in the window, based on the information provided within the VgINavigationInstruction object.
  • The bubble view doesn't have the buttons you want? Feel fry to add more. Update to the bubble view can be performed in VgMyBubbleView block
  • Want to develop your own animation for selecting a layer? You can do that to. Just need to create an object which inherits the VgMyLayerAndCameraHandler interface and then add it to the VgMyBasicApplicationController instead of adding VgMyStackedLayerAndCameraHandler
VisioMove 2.1.3, Visioglobe® 2015