Skip to content

Android SDK ​

Карта в приложении — тот же движок, что JavaScript SDK. Класс EvaMapView, пакет ru.evamaps.sdk. Координаты — LngLat(долгота, широта), как [lng, lat] в веб-SDK.

Минимальная версия Android — 7.0 (minSdk 24). Подпись © OpenStreetMap contributors · © EvaMaps видна всегда, снять её нельзя. Cookies библиотека не ставит. В onDestroy активити нужно вызвать map.destroy(). iOS будет отдельной страницей.

Подключение ​

Библиотека лежит рядом со скриптом веб-SDK: https://evamaps.ru/sdk/android. Это Maven-репозиторий, Gradle скачивает оттуда .aar сам.

kotlin
repositories {
    maven { url = uri("https://evamaps.ru/sdk/android") }
}

dependencies {
    implementation("ru.evamaps:sdk:0.9.0")
}

Ключ ​

Ключ проекта необязателен, как в веб-SDK: без него карта работает в бесплатном лимите. Ключ pk_… из кабинета передаётся в опции. applicationId библиотека подставляет сама — по нему загрузки считаются на приложение, а не на сайт. Неверный ключ не ошибка: запрос идёт как без ключа.

kotlin
map.load(
    EvaMapOptions(
        center = LngLat(37.6173, 55.7558),
        zoom = 12.0,
        key = "pk_…",
    ),
)

Карта на весь экран ​

xml
<ru.evamaps.sdk.EvaMapView
    android:id="@+id/map"
    android:layout_width="match_parent"
    android:layout_height="match_parent" />
kotlin
map.load(EvaMapOptions(center = LngLat(37.6173, 55.7558), zoom = 12.0))
map.addMarker(
    LngLat(37.6173, 55.7558),
    MarkerSpec(title = "Москва", link = "https://evamaps.ru"),
)
map.addPolyline(
    listOf(LngLat(37.60, 55.75), LngLat(37.64, 55.76)),
    ShapeStyle(text = "Линия"),
)
map.addCircle(LngLat(37.63, 55.75), 400.0, ShapeStyle(text = "Круг"))

Тап по метке, линии или кругу открывает балун. У метки текст балуна — text, а если его нет — title. Ссылка в балуне — только http или https.

Один палец двигает карту: cooperative по умолчанию false. Тема при создании — MapTheme.Light, Dark или Gray, сменить позже — setTheme.

Что есть ​

Возможности те же, что у веб-SDK. Методы не повторяют тот справочник.

ВызовЧто делает
setView, fitBoundsКамера
addMarkerМетка: цвет, короткая подпись, картинка по http(s) или data:image/…, балун и ссылка
addPolyline, addPolygon, addCircleЛиния, многоугольник, круг. Радиус круга — в метрах
addGeoJsonGeoJSON строкой
addClusterКластер точек
addImageOverlayКартинка поверх прямоугольника
addWmsСлой WMS
removeObjectУбрать объект по индексу, который вернул add*
geocode, reverseПоиск и адрес точки. Пустой список или null — ничего не нашлось

Клик по метке — setOnMarkerClickListener, по фигуре — setOnShapeClickListener, по точке кластера — setOnClusterPointListener.

Своей HTML-иконки и переключателя слоёв на экране нет: это состояние страницы, из Kotlin его не собрать. Картинку метки задают адресом в MarkerSpec.iconUrl.

Нашли ошибку в документации? Напишите нам