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
}
}