Handling loading callbacks

The Mappedin Mobile SDKs offer callback functions that developers can use to trigger various events based on the completion of certain actions. These methods are useful for modifying UI elements such as loading views, changing floors, changing polygon colours, adding markers etc.

An MPIMapViewDelegate will respond to events triggered by the MPIMapView. To listen to these events, create or modify a class to fit the MPIMapViewDelegate protocol and implement the methods you'd like to use. They will be executed automatically after the corresponding event has occurred.

onDataLoaded

A callback function that is executed when the 3D files have been downloaded for the first map, and are starting to load into memory. The MPIMapView is fully functional at this point, but some things will still be popping in.

At this point, you can interact with the MPIMapView, venue data, call helper functions, call other mapView functions, and set up your application. This function will pass in an MPIData parameter, data, which allows you to use maps, locations, polygons, nodes, vortexes, and map groups of the venue. For example, you can access the list of a venue’s locations by using the class variable locations of the data parameter. You can also call other mapView functions here. For example, you can label your polygons by calling labelPolygon and passing in both an MPIPolygon parameter and various customization options for your labels.

onFirstMapLoaded

A callback that is executed when the first map is fully loaded. This means onDataLoaded has already been fired (if specified) and all the textures and other resources have finished popping in.

onMapChanged

A callback function that is executed when the map of your MPIMapView changes. A common use of this callback is to add a level selector for your venue. If you are working with a venue that has multiple maps (such as a venue with multiple floors) you may want to create a dropdown to allow the user to select a level. When you change the map, this callback will be executed, and it will pass in an MPIMap parameter, map, which is the current map. You can access different properties of map using this parameter.

onPolygonClicked

A callback function that is executed when a polygon is clicked. This function will pass in an MPIPolygon parameter, polygon, that allows you to access different properties of this clicked polygon. A common use of this function is to focus on and highlight the polygon after it is clicked. You can also create a view which displays information about the clicked polygon.

An example is shown below and can also be found in the sample app.

func onPolygonClicked(polygon: MPIPolygon) {
mapView?.focusOn(focusOptions: MPIOptions.Focus(polygons: [polygon]))
mapView?.clearAllPolygonColors() { error in
self.mapView?.setPolygonColor(polygon: polygon, color: "blue")
}
}

Sample Code

extension ViewController: MPIMapViewDelegate {
func onBlueDotPositionUpdate(update: MPIBlueDotPositionUpdate) {
// Called when the blueDot that tracks the user position is updated
}
func onBlueDotStateChange(stateChange: MPIBlueDotStateChange) {
// Called when the state of blueDot is changed
}
func onMapChanged(map: MPIMap) {
// Called when the map is changed
}
func onPolygonClicked(polygon: MPIPolygon) {
// Called when the polygon is clicked
}
func onNothingClicked() {
// Called when a tap doesn't hit any spaces
}
@available(*, deprecated, message: "use onBlueDotPositionUpdate and onBlueDotStateChange")
func onBlueDotUpdated(blueDot: MPIBlueDot) {
}
func onDataLoaded(data: MPIData) {
// Called when the mapView has finished loading both the view and venue data
}
func onFirstMapLoaded() {
// Called when the first map is fully loaded
}
func onStateChanged (state: MPIState) {
// Called when the state of the map has changed
}
}
Was this page helpful?

Next Topic

Labels