Location Details

This is an example of displaying some details of a MapsIndoors location.

Start by creating a UIViewController class that conforms to the MPMapControlDelegate protocol

class LocationDetailsController: UIViewController, MPMapControlDelegate {

Add a MPMapControl to the class

var mapControl: MPMapControl?

Add other views needed for this example

var detailsView = UIStackView()
var mainView = UIStackView()
var nameLabel = UILabel()
var descrLabel = UILabel()

Inside viewDidLoad, setup the label views

mapControl?.delegate = self
nameLabel.backgroundColor = UIColor.white
descrLabel.backgroundColor = UIColor.white

Arrange the labels inside a stackview

detailsView = UIStackView(arrangedSubviews: [nameLabel, descrLabel])
detailsView.axis = .vertical

Arrange the map and the stackview inside another stackview

mainView = UIStackView(arrangedSubviews: [map!, detailsView])
mainView.axis = .vertical

When marker is tapped, get related MapsIndoors location object and set label text, based on the name and description of the location

func didTapInfoWindow(location: MPLocation) -> Bool {
    self.nameLabel.text = location.name
    self.descrLabel.text = location.descr
    return false
}

When map is tapped, reset label text

func didTap(coordinate: MPPoint) -> Bool {
    self.nameLabel.text = nil
    self.descrLabel.text = nil
    return false
}

Last updated