Начало работы с NaviKit SDK
Процесс начала работы с NaviKit SDK имеет много сходств с подключением обычного MapKit, однако имеет несколько важных отличий.
Шаг 1. Получение ключа для работы с NaviKit SDK
Для работы с NaviKit SDK требуется наличие API-ключа.
- Создайте новый API-ключ для MapKit SDK или используйте существующий.
- Чтобы API-ключ можно было использовать в приложениях с NaviKit SDK его необходимо активировать. Для этого напишите нам на почту paid-api-maps@yandex-team.ru.
Шаг 2. Добавление NaviKit SDK зависимостей
Для использования всех функций, предоставляемых NaviKit SDK, вам необходимо добавить зависимость в ваш Podfile
:
platform :ios, '13.0'
target 'NavikitDemo' do
pod 'YandexMapsMobile', '4.6.1-navikit'
pod 'YMKStylingAutomotiveNavigation', '4.6.1'
pod 'YMKStylingRoadEvents', '4.6.1'
end
Шаг 3. Разрешение на запрос локации
NaviKit SDK для iOS требует разрешение на доступ к локации для отслеживания текущего местоположения устройства.
-
Добавьте следующее поле в ваш
Info.plist
файл:<key>NSLocationWhenInUseUsageDescription</key> <string>Your location is required for navigation</string>
-
Создайте
locationManager
и запросите разрешение на доступ к локации пользователя. Например, это можно сделать в методеviewDidLoad()
вашего ViewController:import CoreLocation import UIKit class MainViewController: UIViewController, CLLocationManagerDelegate { override func viewDidLoad() { super.viewDidLoad() locationManager.delegate = self locationManager.requestAlwaysAuthorization() } private let locationManager = CLLocationManager() }
Шаг 4. Настройка MapKit SDK
Выполните шаги из Шаг 3. Добавьте API-ключ для MapKit: установите ваш API-ключ, инициализируйте MapKit и создайте View с картой.
Если после запуска приложения MapKit карта успешно открылась и ее данные прогрузились, настройки выполнены верно.
Шаг 5. Обратите внимание при дальнейшей работе
MapKit хранит слабые ссылки на передаваемые ему Listener-объекты. Необходимо самим хранить ссылку на них в памяти:
Примечание
Все Listener-объекты должны наследоваться от класса NSObject
.
internal class CameraListener: NSObject, YMKMapCameraListener {
func onCameraPositionChanged(
with map: YMKMap?,
cameraPosition: YMKCameraPosition,
cameraUpdateReason: YMKCameraUpdateReason,
finished: Bool
) {
// Do something
}
}
let cameraListener = CameraListener()
override func viewDidLoad() {
super.viewDidLoad()
mapView.mapWindow.map!.addCameraListener(with: cameraListener)
}
Когда все зависимости установлены, можно приступить к использованию NaviKit SDK в вашем проекте.
В следующем разделе рассмотрена общая архитектура сущностей NaviKit SDK.