Тема
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 | Линия, многоугольник, круг. Радиус круга — в метрах |
addGeoJson | GeoJSON строкой |
addCluster | Кластер точек |
addImageOverlay | Картинка поверх прямоугольника |
addWms | Слой WMS |
removeObject | Убрать объект по индексу, который вернул add* |
geocode, reverse | Поиск и адрес точки. Пустой список или null — ничего не нашлось |
Клик по метке — setOnMarkerClickListener, по фигуре — setOnShapeClickListener, по точке кластера — setOnClusterPointListener.
Своей HTML-иконки и переключателя слоёв на экране нет: это состояние страницы, из Kotlin его не собрать. Картинку метки задают адресом в MarkerSpec.iconUrl.