Как начать работу с MapKit для iOS

Библиотека MapKit для платформы iOS 9 и выше доступна в репозитории CocoaPods. Чтобы создать приложение с картой Яндекса:

  1. Шаг 1. Получите ключ для работы с MapKit
  2. Шаг 2. Добавьте библиотеку в проект
  3. Шаг 3. Настройте библиотеку
  4. Шаг 4. Соберите и запустите приложение

Шаг 1. Получите ключ для работы с MapKit

  1. Авторизуйтесь с учетной записью Яндекса или зарегистрируйте новый аккаунт.
  2. Нажмите Получить ключ и выберите пакет MapKit SDK.
  3. Заполните информацию о проекте, укажите нужный тариф и нажмите Отправить.

Дальнейшие инструкции придут на почту.

Полученный ключ можно использовать для работы с MapKit в нескольких приложениях.

Шаг 2. Добавьте библиотеку в проект

Добавьте библиотеку в проект с помощью CocoaPods.

  1. Перейдите в каталог с Xcode-проектом (каталог, в котором находится файл с расширением xcodeproj).
  2. Создайте Podfile для перечисления зависимостей от других библиотек:
    $ pod init
  3. Откройте Podfile в текстовом редакторе и добавьте зависимость для своей цели:
      use_frameworks!
      # Основная библиотека MapKit.
      pod ‘YandexMapKit’, ’3.4’ 
      # Дополнительные модули MapKit.
      # Удалите зависимости если ваше приложение не использует их.
      pod ‘YandexMapKitDirections’, ’3.4’ 
      pod ‘YandexMapKitPlaces’, ’3.4’ 
      pod ‘YandexMapKitSearch’, ’3.4’ 
      pod ‘YandexMapKitTransport’, ’3.4’ 

    Библиотека «YandexMapKit» содержит основные классы, необходимые для работы с MapKit. Другие зависимости позволяют использовать дополнительные возможности MapKit.

  4. Выполните в каталоге проекта команды:
    $ pod install
    Примечание.

    В дальнейшем можно пользоваться командой pod update для обновления версии библиотеки.

    После этого в каталоге проекта появится файл с расширением xcworkspace. Для работы c проектом используйте данный файл. Не используйте файл с расширением xcodeproj.

    Чтобы открыть файл проекта, выполните команду:

    $ open *.xcworkspace

Шаг 3. Настройте библиотеку

Чтобы использовать библиотеку в приложении, инициализируйте ее с заданными параметрами. Откройте xcworkspace и внесите следующие изменения:

  1. Добавьте элемент View на storyboard.
  2. Укажите класс YMKMapView для добавленного View.
  3. Запросите необходимые разрешения в файле info.plist:
    NSLocationWhenInUseUsageDescription
  4. Подключите библиотеку MapKit:
    import YandexMapKit
  5. Задайте ваш API-ключ в методе application:didFinishLaunchWithOptions делегата приложения:
    func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
        YMKMapKit.setApiKey("Ваш API ключ")
  6. Инициализируйте карту в контроллере нужного View:

    override func viewDidLoad() {
        super.viewDidLoad()
        
        mapView.mapWindow.map!.move(
            with: YMKCameraPosition.init(target: YMKPoint(latitude: 55.751574, longitude: 37.573856), zoom: 15, azimuth: 0, tilt: 0),
            animationType: YMKAnimation(type: YMKAnimationType.smooth, duration: 5),
            cameraCallback: nil)
    }

Шаг 4. Соберите и запустите приложение

Соберите приложение. Запустить его можно на:

  • iOS-устройств.

    Перейдите в меню Product → Destination, затем выберите устройство в разделе Device.

  • Эмуляторе.

    Перейдите в меню Product → Destination, затем выберите симулятор в разделе iOS Simulators.

Запустите приложение. Для этого выберите в меню Product → Run.

Пример приложения

import UIKit
import Foundation
import YandexMapKit

/**
 * В этом примере показывается карта и камера выставляется на указанную точку. 
 * Нужно указать ваш API-ключ в файле AppDelegate.swift с помощью метода YMKMapKit.setApiKey(MAPKIT_API_KEY).
 * Не забудьте запросить необходимые разрешения.
 */
class MapViewController: UIViewController {
    @IBOutlet weak var mapView: YMKMapView!
    
    let TARGET_LOCATION = YMKPoint(latitude: 59.945933, longitude: 30.320045)
    
    override func viewDidLoad() {
        super.viewDidLoad()
        
        mapView.mapWindow.map!.move(
            with: YMKCameraPosition(target: TARGET_LOCATION, zoom: 15, azimuth: 0, tilt: 0),
            animationType: YMKAnimation(type: YMKAnimationType.smooth, duration: 5),
            cameraCallback: nil)
    }
}

Полный код примера доступен в репозитории GitHub.