Show the Blue Dot with MapsIndoors - Part 2

Last updated:

This is part 2 of the tutorial of managing a blue dot on the map. In Part 1 we created the position provider. Now we will create a Fragment displaying a map that shows the users (mock) location.

Create a class ShowUserLocationFragment that inherits from Fragment.

public class ShowUserLocationFragment extends Fragment {

Add a GoogleMap and a MapControl to the class

GoogleMap mGoogleMap;
MapControl mMapControl;

Add a map fragment

SupportMapFragment mMapFragment;

The latitude and longitude of the Venue

static final LatLng VENUE_LAT_LNG = new LatLng( 57.05813067, 9.95058065 );

Set the API key to the MapsIndoors Solution:

if( !MapsIndoors.getAPIKey().equalsIgnoreCase( getString( R.string.mi_api_key ) ) )
MapsIndoors.setAPIKey( getString( R.string.mi_api_key ) );
if( getActivity() == null )

Instanciate and init the mapControl object

mMapControl = new MapControl( getActivity(), mMapFragment, mGoogleMap );
mMapControl.init( miError -> {
if( miError == null )
Activity context = getActivity();
if( context != null )
context.runOnUiThread( () -> {
mMapControl.selectFloor( 1 );
mGoogleMap.animateCamera( CameraUpdateFactory.newLatLngZoom( VENUE_LAT_LNG, 20f ) );
  • Create an instance of the 'DemoPositionProvider' that we defined previously
DemoPositionProvider demoPositionProvider = new DemoPositionProvider();
  • Assign the DemoPositionProvider instance to the MapsIndoors.positionProvider by calling the 'MapsIndoors.setPositionProvider'
  • Start positioning
  • Tell the mapControl to show the users location

In the 'onDestroyView' method, we need to free the MapsIndoors PositionProvider


See the sample in