Как начать работу с MapKit для Android
Библиотека MapKit для платформы Android 4.0.3 и выше доступна в репозитории Maven Central. Чтобы создать приложение с картой Яндекса:
- Шаг 1. Получите ключ для работы с MapKit
- Шаг 2. Установите библиотеку MapKit
- Шаг 3. Настройте библиотеку
- Шаг 4. Соберите и запустите приложение
- При дальнейшей работе
Шаг 1. Получите ключ для работы с MapKit
- Перейдите в Кабинет Разработчика.
- Авторизуйтесь с учетной записью Яндекса или зарегистрируйте новый аккаунт.
- Нажмите Получить ключ и выберите пакет MapKit SDK.
- Заполните информацию о проекте, укажите нужный тариф и нажмите Отправить.
Дальнейшие инструкции придут на почту.
Полученный ключ можно использовать для работы с MapKit в нескольких приложениях.
Шаг 2. Установите библиотеку MapKit
- Создайте новый проект или откройте существующий, например, в Android Studio.
- Откройте файл build.gradle проекта. В секции repositories добавьте репозиторий Maven Central:
repositories { ... mavenCentral() }
- Откройте файл build.gradle приложения (модуля). Укажите адрес репозитория и добавьте зависимость:
repositories { maven { url "http://maven.google.com/" } } dependencies { ... // Основная библиотека MapKit. implementation 'com.yandex.android:mapkit:3.4.0' // Дополнительные модули MapKit. // Удалите зависимости если ваше приложение не использует их. implementation 'com.yandex.android:directions:3.4.0' implementation 'com.yandex.android:places:3.4.0' implementation 'com.yandex.android:search:3.4.0' implementation 'com.yandex.android:transport:3.4.0' }
- Синхронизируйте проект, чтобы применить изменения. Например, в Android Studio можно нажать Sync Now или выбрать в меню . Дождитесь окончания синхронизации.
Если синхронизация завершилась успешно, при компиляции библиотека будет добавлена в проект автоматически. При ошибке компиляции, убедитесь что вы правильно указали репозиторий и зависимость и синхронизируйте проект снова.
Шаг 3. Настройте библиотеку
- Добавьте карту на Activity:
<com.yandex.mapkit.mapview.MapView android:id="@+id/mapview" android:layout_width="match_parent" android:layout_height="match_parent"/>
- Инициализируйте карту в методе
onCreate
нужного Activity:private MapView mapview; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); MapKitFactory.setApiKey("Ваш API ключ"); MapKitFactory.initialize(this); // Укажите имя activity вместо map. setContentView(R.layout.map); mapview = (MapView)findViewById(R.id.mapview); mapview.getMap().move( new CameraPosition(new Point(55.751574, 37.573856), 11.0f, 0.0f, 0.0f), new Animation(Animation.Type.SMOOTH, 0), null); }
Примечание. Не рекомендуется вызыватьMapKitFactory.initialize()
в методеApplication.onCreate()
. Это может привести к лишним операциям и повышенному расходу батареи устройства. - Передайте события
onStart
иonStop
вMapKitFactory
иmapView
. Иначе MapKit не сможет отобразить карту и остановить обработку карты, когда Activity с картой становится невидимым для пользователя:@Override protected void onStop() { super.onStop(); mapview.onStop(); MapKitFactory.getInstance().onStop(); } @Override protected void onStart() { super.onStart(); mapview.onStart(); MapKitFactory.getInstance().onStart(); }
Шаг 4. Соберите и запустите приложение
При работе в Android Studio приложение можно сразу запустить, сборка будет выполнена автоматически. Следуйте инструкциям ниже, чтобы запустить приложение на:
Android-устройстве, подключенном через USB к компьютеру разработчика (в режиме отладки).
При дальнейшей работе
Listener-объекты, сообщающие о результате многократных операций или состоянии объекта, нужно явно сохранять в памяти:
private final CameraListener cameraListener = new CameraListener() {
// ...
}
mapview.getMap().addCameraListener(cameraListener);
Пример приложения
package com.yandex.mapkitdemo;
import android.os.Bundle;
import android.app.Activity;
import com.yandex.mapkit.Animation;
import com.yandex.mapkit.MapKitFactory;
import com.yandex.mapkit.geometry.Point;
import com.yandex.mapkit.map.CameraPosition;
import com.yandex.mapkit.mapview.MapView;
/**
* В этом примере показывается карта и камера выставляется на указанную точку.
* Не забудьте запросить необходимые разрешения.
*/
public class MapActivity extends Activity {
/**
* Замените "your_api_key" валидным API-ключом.
* Ключ можно получить на сайте https://developer.tech.yandex.ru/
*/
private final String MAPKIT_API_KEY = "your_api_key";
private final Point TARGET_LOCATION = new Point(59.945933, 30.320045);
private MapView mapView;
@Override
protected void onCreate(Bundle savedInstanceState) {
/**
* Задайте API-ключ перед инициализацией MapKitFactory.
* Рекомендуется устанавливать ключ в методе Application.onCreate,
* но в данном примере он устанавливается в activity.
*/
MapKitFactory.setApiKey(MAPKIT_API_KEY);
/**
* Инициализация библиотеки для загрузки необходимых нативных библиотек.
* Рекомендуется инициализировать библиотеку MapKit в методе Activity.onCreate
* Инициализация в методе Application.onCreate может привести к лишним вызовам и увеличенному использованию батареи.
*/
MapKitFactory.initialize(this);
// Создание MapView.
setContentView(R.layout.map);
super.onCreate(savedInstanceState);
mapView = (MapView)findViewById(R.id.mapview);
// Перемещение камеры в центр Санкт-Петербурга.
mapView.getMap().move(
new CameraPosition(TARGET_LOCATION, 14.0f, 0.0f, 0.0f),
new Animation(Animation.Type.SMOOTH, 5),
null);
}
@Override
protected void onStop() {
// Вызов onStop нужно передавать инстансам MapView и MapKit.
mapView.onStop();
MapKitFactory.getInstance().onStop();
super.onStop();
}
@Override
protected void onStart() {
// Вызов onStart нужно передавать инстансам MapView и MapKit.
super.onStart();
MapKitFactory.getInstance().onStart();
mapView.onStart();
}
}
Полный код примера доступен в репозитории GitHub.