MapView
@objc
open class MapView : UIView
The MapView
object to wrap the underlying map renderer.
It contains the map created by the renderer in the view hierarchy and provides UI and view life-cycle functionalities. The view can be created programmatically, via xib or storyboards.
For example, displaying a simple MapView
programmatically using a constraints-based layout:
Initialization:
lazy var mapView: MapView = {
let mapOptions = MapOptions(mapStyle: .defaultStyle, apiKey: "your-key")
let mapView = MapView(mapOptions: mapOptions)
return mapView
}()
Layout:
mapView.translatesAutoresizingMaskIntoConstraints = false
view.addSubview(mapView)
NSLayoutConstraint.activate([
mapView.widthAnchor.constraint(equalTo: view.widthAnchor),
mapView.heightAnchor.constraint(equalTo: view.heightAnchor),
])
Setting up the receival of life-cycle events and updates, as well as setting the initial zoom and position of the map view:
mapView.delegate = self
mapView.cameraUpdate = .init(position: .AMSTERDAM, zoom: 13)
There will also be a need to conform your UIViewController
to MapViewDelegate
and implement the required methods.
Object for setting the map camera. Use it to set parameters such as:
- Position
- Zoom
- Tilt
- Rotation
Can be used with
UIView.animated
.
Example:
UIView.animate(withDuration: 5,
delay: 2,
options: [.beginFromCurrentState,
.allowUserInteraction,
.curveEaseIn],
animations: {
self.mapView.cameraUpdate = CameraUpdate(rotation: 180.0)
}) { _ in }
}
Declaration
Swift
public var cameraUpdate: CameraUpdate { get set }
This represents the compass button on the map. This button provides a quick way for users to change the map to have a northern orientation.
Important
This is a Public Preview API. It may be changed or removed at any time.Declaration
Swift
public var compassButton: CompassButtonViewModel { get }
Compass button visibility policy.
See moreDeclaration
Swift
public enum CompassButtonVisibilityPolicy
Sets the control compass button visibility on the map.
Default value: .visibleWhenNeeded
Declaration
Swift
public var compassButtonVisibilityPolicy: CompassButtonVisibilityPolicy { get set }
Sets the edge insets of the map view to determine space for the safe area.
The safe area is the part of the viewport that is considered completely visible by the user, not covered by UI components such as buttons or sliders.
By default, the edge insets are zero.
Declaration
Swift
public var contentInsets: NSDirectionalEdgeInsets { get set }
Parameters
contentInsets
|
The directional edge insets to set. |
This represents the button that shows the user’s current location on the map.
Important
This is a Public Preview API. It may be changed or removed at any time.Declaration
Swift
public var currentLocationButton: CurrentLocationButtonViewModel { get }
Current location button visibility policy.
See moreDeclaration
Swift
public enum CurrentLocationButtonVisibilityPolicy
Sets the control current location visibility on the map.
Default value: .hidden
Declaration
Swift
public var currentLocationButtonVisibilityPolicy: CurrentLocationButtonVisibilityPolicy { get set }
The MapViewDelegate
protocol that informs you when the MapView
object is ready to be used.
Declaration
Swift
public weak var delegate: MapViewDelegate?
Tells the view that its window object changed.
Additionally, this implementation validates the display link of the renderer, and adds the current location button to the map view if the view hierarchy is ready.
Declaration
Swift
override public func didMoveToWindow()
Sets a closure that will be triggered when the map instance is ready to use. The closure will be executed on the main thread.
When the map view is fully initialized you can use the TomTomMap
object to interact with it.
The closure passes the ready-to-use TomTomMap
of the fully initialized MapView
.
Declaration
Swift
public func getMapAsync(closure: @escaping (TomTomMap) -> ())
Parameters
closure
|
The closure which handles the result. |
MapView
init method.
Ensure that MapsDisplayService.apiKey
is set before calling this method, or use the
public init(mapOptions: MapOptions)
initializer as follows:
lazy var mapView: MapView = {
let mapOptions = MapOptions(apiKey: "YOUR MAP KEY")
let mapView = MapView(mapOptions: mapOptions)
return mapView
}()
Declaration
Swift
public convenience init()
MapView
init with coder method.
If you are using xib or storyboards, ensure that make sure that MapsDisplayService.apiKey
is set
before loading the MapView
.
Declaration
Swift
public required init?(coder: NSCoder)
Parameters
coder
|
The coder object used to decode the |
MapView
init method.
Ensure that MapsDisplayService.apiKey
is set before calling this method, or use the
public init(mapOptions: MapOptions)
initializer as follows:
lazy var mapView: MapView = {
let mapOptions = MapOptions(apiKey: "YOUR MAP KEY")
let mapView = MapView(mapOptions: mapOptions)
return mapView
}()
Declaration
Swift
override public convenience init(frame: CGRect)
Parameters
frame
|
The view frame. |
MapView
init method, initializes the map with the given MapOptions
.
If MapsDisplayService.apiKey
was set before calling this method, it will be overwritten with the MapOptions
apiKey.
Declaration
Swift
@objc
public init(mapOptions: MapOptions)
Parameters
mapOptions
|
The map options. |
Whether the current location button is visible at the moment.
Declaration
Swift
public var isCurrentLocationButtonVisible: Bool { get }
A Boolean value that determines whether the map view is hidden.
Declaration
Swift
override public var isHidden: Bool { get set }
Sets the logo view visibility on the map.
Declaration
Swift
public var isLogoVisible: Bool { get set }
Sets the scale view visibility on the map.
Declaration
Swift
public var isScaleViewVisible: Bool { get set }
The LogoViewModel
allows for control over the visibility a
of the logo view.
Important
This is a Public Preview API. It may be changed or removed at any time.Declaration
Swift
public var logoView: LogoViewModel { get }
The map management object acting as the primary gateway for integrating a multitude of map-related features.
It offers a rich set of functionalities enabling developer interaction with the map and customizing its behavior.
For more information, refer toTomTomMap
.
Declaration
Swift
public private(set) lazy var map: TomTomMap { get set }
The layout guide that represents the portion of the map view obscured by map scale.
A UILayoutGuide
represent a rectangle in the layout engine.
It will not be part of the view hierarchy, but may be applied with NSLayoutConstraint
.
Important
This is a Public Preview API. It may be changed or removed at any time.Declaration
Swift
public var mapButtonsBottomSafeAreaLayoutGuide: UILayoutGuide { get }
Tells the closure that the specified map view is ready to be used.
When the map view is fully initialized you can use the TomTomMap
object to interact with it.
The closure passes the ready-to-use TomTomMap
of the fully initialized MapView
.
Declaration
Swift
public var onMapReadyCallback: ((TomTomMap) -> ())?
Preferred frames per second. Default value: 60 fps.
The application’s view will choose a frame rate as close as possible to the chosen preferred frames per second based on the capabilities of the screen’s refresh rate.
Declaration
Swift
public var preferredFramesPerSecond: Int { get set }
Notifies when a new frame is rendered as a texture.
When set, rendering performance may drop.
Important
Frame capture is supported only when using Metal renderer.Declaration
Swift
public weak var rendererFrameCaptureDelegate: MapRendererFrameCaptureDelegate? { get set }
Replaces the list of data providers used as an alternative tile source.
Tiles from the old data providers are loaded through the new data providers. If no data provider loads, the default data provider is used internally.
Important
This is a Public Preview API. It may be changed or removed at any time.Declaration
Swift
public func replaceDataProviders(_ dataProviders: [MapDisplayDataProvider])
Parameters
dataProviders
|
The data providers that are alternative tile sources. |
This represents the scale view on the map. This view provides a quick way for users to change visibility and the scale units.
Important
This is a Public Preview API. It may be changed or removed at any time.Declaration
Swift
public var scaleView: ScaleViewModel { get }
Sets the scale view’s unit system.
The scale view is located in the lower-right corner of the map. It appears when zooming in or out, then disappears after 5 seconds without any map interaction. It also disappears when the map is tilted or when the scale is out of range.
By default the units are set to metric or imperial based on the system settings. You can change them by modifying this property. For example:
mapView.scaleViewUnitSystem = .uk // UK units system.
mapView.scaleViewUnitSystem = .us // US units system.
mapView.scaleViewUnitSystem = .metric // Metric units system.
Important
This is a Public Preview API. It may be changed or removed at any time.Declaration
Swift
public var scaleViewUnitSystem: UnitsSystem { get set }
The ZoomControlsViewModel
controls the visibility of
the zoom controls and lets you set custom zoom-in and zoom-out icons.
Important
This is a Public Preview API. It may be changed or removed at any time.Declaration
Swift
public var zoomControlsView: ZoomControlsViewModel { get }