Last updated
Last updated
In this tutorial we will show how you can show a blue dot on the map, representing the users location. The position will be served from a mocked positioning provider and displayed on a map in a view controller.
We will start by creating our implementation of a positioning provider.
Create a class MyPositionProvider
that inherits from NSObject and implements MPPositionProvider
.
Add some member variables to MyPositionProvider
.
delegate
: The delegate object
running
: A running state boolean flag
latestPositionResult
: The latest positioning result
preferAlwaysLocationPermission
: A boolean that indicates whether this provider requires Apple Location Services to always be active
locationServicesActive
: A boolean that indicates whether Apple Location Services is currently active
providerType
: A provider type enum, convenient when working with multiple positioning providers in the same application
Create a method called updatePosition
. This will be our "loop" constantly posting a new position to the delegate.
Check if the provider has a running state
Assign a new MPPositionResult
to latestPositionResult
Assign a new position point
Optionally specify that heading is available and set a heading
Notify the delegate by calling onPositionUpdate
passing the new position as argument
Schedule a new delayed call of this method
Implement the requestLocationPermissions
method. In this example we will just set the locationServicesActive
to true.
Implement the updateLocationPermissionStatus
method. In this example we will just set the locationServicesActive
to true.
Implement the startPositioning
method. We set the running
boolean to true and call updatePos
.
Implement the stopPositioning
method. We set the running
boolean to false.
Implement the startPositioningAfter
method. This is just a convenience method that should support a delayed start.
Implement the isRunning
method. Return the value of running
.
Create a class ShowMyLocationController
that inherits from UIViewController
.
Add a GMSMapView
and a MPMapControl
to the class
Inside viewDidLoad
, setup the map so that it shows the demo venue and initialise mapControl
Inside viewDidLoad
, optionally add a special icon for the user location
Inside viewDidLoad
, finally
Tell mapControl to show the users location
Assign your position provider MyPositionProvider
to MapsIndoors.positionProvider
Start positioning