Show a Map

Your environment is now fully configured, and you have the necessary Google Maps and MapsIndoors API keys. Next you will learn how to load a map with MapsIndoors.

Show a Map with MapsIndoorsarrow-up-right

circle-info

ASYNC

Please note that data in MapsIndoors is loaded asynchronously. This results in behavior where data might not have finished loading if you call methods accessing it immediately after initializing MapsIndoors. Best practice is to set up listeners or delegates to inform of when data is ready. Please be aware of this when developing using the MapsIndoors SDK.

Initialize MapsIndoorsarrow-up-right

We start by initializing MapsIndoors. MapsIndoors is used to get and store all references to MapsIndoors-specific data. This includes access to all MapsIndoors-specific geodata.

Place the following initialization code in the onCreate method in the MapsActivity that displays the Google map. You should also assign the mapFragment view to a local variable, as we will use this later to initialize MapControlarrow-up-right inside the onCreate, after it has been created:

MapsActivity.ktarrow-up-right

override fun onCreate(savedInstanceState: Bundle?) {
    ...
    MapsIndoors.load(applicationContext, "YOUR_MAPSINDOORS_API_KEY", null)

    mapFragment.view?.let {
        mapView = it
    }
    ...
}

If you do not have your own key, you can use this demo MapsIndoors API key: 02c329e6777d431a88480a09.

Initialize MapsControlarrow-up-right

We now want to add all the data we get by initializing MapsIndoors to our map. This is done by initializing MapControlarrow-up-right onto the map. MapControlarrow-up-right is used as a layer between the map provider and MapsIndoors.

circle-info

MapControlarrow-up-right uses Google Maps listeneres to control some map logic. So be aware that using Google Maps listeners directly might break intended behavior of the MapsIndoors experience. We recommend to check our reference docs, and see if you can add a specific Listener through the MapControlarrow-up-right and always use those when possible.

Start by creating an initMapControl method which is used to initiate the MapControlarrow-up-right and assign it to mMap:

In your onMapReady callback function, assign the mMap variable with the GoogleMap you get from the callback and call the initMapControl method with the mMapView you assigned in the onCreate to set up a Google map with MapsIndoors Venues, Buildings and Locations. For Mapbox you can simple call initMapControl inside your onCreate:\

Expected result:

See the full example of MapsActivity here: MapsActivity.ktarrow-up-right

The Mapbox examples can be found here: MapsActivity.ktarrow-up-right

Last updated

Was this helpful?