Yandex maps java android

Мой (нано)опыт с Yandex.Maps API или зачем нужна инструкция

Introduction

Я андроид разработчик и.

Мне довелось допиливать небольшой проект(

500h), в котором на старте было принято решение использовать Yandex.Maps API, потому что зачем для Москвы использовать гугл карты, если есть наши. Сейчас расскажу, как все прошло.

Я не проводил глубоких подкапотных исследований и никаких секретов не открою. Но, если вам, как и мне, надо очень быстро (вчера) начать использовать в вашем проекте карты, надеюсь, помогу сэкономить немного времени.

Если лень читать или сразу нужен вывод, отправляю в последнее “Действие 4: Это конец / TL;DR”

Действие 0: Определения

Начнем с определений: что, зачем, почему.

Задача: отобразить карту Москвы, пинами указать конкретные места, уметь построить маршрут от текущего положения до конкретной точки (или до нескольких).
Технология: Yandex.Maps API. Ссылки на документацию[1] ниже.
Итого: прочитайте документацию, реализуйте фичи.

Все выглядит просто, что может пойти не так.

Действие 1: Поиск

Прежде чем изучить документацию, её надо найти. Искать яндекс, конечно же, будем в гугле — найдем [2] или [2].ru [3]. Мы — девелоперы, видим кнопку “для девелоперов” — жмем. Огромная иконка “Maps API” выглядит как то, что нам нужно! (It’s a trap!)

В “. /maps” [4] нас ждут только бесконечный поиск, разочарование и страдания. Которые к нужной документации меня так и не привели.

Возвращаемся на шаг назад, листаем вниз и находим MapKit [5] — нам сюда. Навигация тут довольно грустная, поэтому вот важные ссылки — android samples [6] и Documentation [7] (возможно, иногда получится найти тут что-то полезное).

Действие 2: Поехали

Находим Getting started и приступаем. В начале все просто.

На “Step 3. Set up the library” возникают вопросы. Вью и фабрику нужно обязательно стартовать и останавливать отдельно, иначе, как нам сообщают, ничего не будет работать. Почему? А что будет, если что-то стартану, а что-то нет, или стартану что-то позже? А если несколько вьюх, то для каждого надо фабрику, или это синглтон?

Возможно, это всего лишь QuickStart и дальше мы найдем подробное описание! (нет)

Давайте смотреть, что есть по документации. А все, ничего больше нет. Есть только сгенерированная документация с комментариями типа:

Ладно, на гитхабе есть еще проект с примерами использования [8]. Внутри каждого класса активити есть комментарии о том, что он делает и зачем нужен (после документации это просто подарок судьбы). Есть несколько сценариев: создание кастомного слоя карты, построение маршрута для автомобиля, работа с объектами на карте и некоторые другие.

Выглядит ли апи мощным? Да.
Понятно ли как им пользоваться в случаях, чуть более сложных, чем примеры? Нет.(
Как это понять? ¯_(ツ)_/¯ Нырять с головой в код, по итогу исследований продавать книжку о том, что нашел.

Действие 3: Разрабатываем

Задача 1: отобразить карту
Сложностей не встретил, все есть в гайде.

Задача 2: отобразить пины
Нам нужен “MapObjectsActivity.java», то, что мы ищем, называется Placemarks. Смотрим в код, чтобы понять, что с ними делать.

Читайте также:  Android studio mqtt client

Задача 3: построить маршрут
Наш друг тут — “MasstransitRoutingActivity.java”. Маршрут можно попросить разный: только на машине, только пешком, и так и сяк; наверняка можно еще учесть метро и другие разные штуки, но я недонырнул.

Дополнительная задача: позиционирование прямое и обратное. Надо же еще уметь определять местоположение. Прямое геокодирование — определять координаты по названию, обратное — определять название по координатам.

Для решения этой задачи придется вернуться в поиск — и найти документацию для js [9]. Она кажется гораздо более подробной и объемной (я завидую). Нам необходим “HTTP geocoding request” [10] — тут довольно понятно написано, что это и как его использовать. Дело за реализацией http запросов-ответов на мобилках.

Действие 4: Это конец / TL;DR

Общие итоги:
Яндекс карты классные. Как ими пользоваться — непонятно.

Хорошая документация, чтобы “потрогать” сервис. Ужасная документация, чтобы что-то с ним сделать. Структура ссылок — “Хрен найдешь”, качество находки — “Вот колесо, оно катится. А далее вы сами легко сможете изобрести машину, ракету, подводную лодку”.

Основные моменты:
Как отобразить карту в проекте? Ссылка [7], тут всё просто.
Как добавить пин на карту? Ключевые слова Placemark, MapObjects. Искать в samples.
Как построить маршрут? Ключевое слово MasstransitRouting. Искать в samples.
Как сделать что-то еще? Искать в samples. Если там нет, то у вас проблемы.

Источник

Интеграция карт в ваше Android-приложение

Есть много разных идей, для реализации которых могут понадобиться карты на мобильных устройствах.
Возможности таких устройств позволяют довольно оперативно получать информацию о местоположении, графические данные и графические преобразования для отображения объёма ландшафта.

В данном статье я расскажу как интегрировать возможность просмотра карт для мобильных устройств на основе Android, на примере Yandex Карт и Google Maps.
Функционал библиотек этих компаний позволяет:

  • Перемещать карту
  • Изменять масштаб
  • Изменять виды карт
  • Получать события от карты

Начнём с отечественного производителя.

Yandex

Библиотеку Yandex MapKit можно скачать с GitHub’а, там же есть версия и для iOS.
Но прежде чем начать использовать, нам надо получить API-key, для этого идём на почту и пишем письмо в support@mobmaps.yandex.ru, указав в заголовке «Map Kit запрос API-ключа». В ответ вам пришлют письмо с указанием дополнительных ссылок на документацию, на правила использования и собственно с самим ключом в теле письма (а могут и не прислать, кстати).

Пока ждём письмо, берём библиотеку и прикрепляем её к проекту.

После долгого ожидания с кружкой кофе, знакомимся с содержимым письма и информации по ссылкам, берём ключик и пишем в вашем layout’е приложения следующий код:

где заместо «you are key» вставляем полученный ключ. Всё, карта есть.

Далее код показывает, как перемещать карту на заданную координату и использовать зум:

Google

Для использования Google Maps надо совершить куда более изощрённые действия. Я расскажу, как получить debug-key для использования карт, но процесс получения release версии похоже несколько замороченней, но я release ещё не получал.

Для получения debug-key, надо найти ваше хранилище ключей, для отладки.
По-умолчанию, путь будет выглядеть примерно так:

Затем открываем командную строку, переходим в каталог, куда установлена Java:

где путь_до_хранилища_ключей — свой путь до debug.keystore (осторожно, возможны проблемы с пробелами в пути).

После чего в том же окне будет выведен md5-ключ после «Certificate fingerprint (MD5)».
Идём по ссылке и регистрируем код.
После чего Google сгенерирует с нужным кодом для layout и встроенным кодом, берём его и вставляем к себе в layout.
Далее нам, надо наш Activity представить в примерно следующем виде:

Читайте также:  Addons mozilla org android

Замечу, что Activity наследован должен быть от MapActivity хранящийся в com.google.android.maps.MapActivity.
А в манифесте прописать между тегами вставить:

И не забыть, про разрешение доступа в интернет для приложения:

В остальном функционал GoogleMaps и YandexMapKit весьма схож:

Как можно видеть, процесс интеграции карт в приложения довольно простой, а спектр использования довольно широк.
Более подробно можно ознакомиться ниже.

Определение собственной позиции

Чтобы немного расширить пример, приложу кусок кода:

Но для использования этого кода, в манифесте следует указать следующее разрешение:

Источник

Yandex maps java android

Yandex Map Kit for Android

Latest commit

Git stats

Files

Failed to load latest commit information.

README.md

Эта версия больше не поддерживается, актуальную инфрмацию о новых версиях MapKit можно найти по ссылкам:

В этом репозитории находится тестовое приложение, демонстрирующее возможности Yandex Map Kit.

  1. Добавлено новое API уOverlayItem setOverlayItemListener #256
  2. Исправлена ошибка #253
  3. Исправлена ошибка #249
  4. Исправлена ошибка #240
  5. Исправлена ошибка #234
  1. Исправлена ошибка утечки #243
  2. Исправлена ошибка #240
  3. Добавили свойство в MapEvent isGesture() #237
  1. Исправлены ошибки при отображении карты
  2. Добавлен arm64-v8a и x86_64 архитектуры
  1. Исправлены ошибки отображения кнопок на карте
  2. Добавлен пример работы с запросом разрешений на получения геопозиции
  1. Исправлены ошибки, приводившие к падениям
  2. Удалены все запросы разрешений, кроме получения геопозиции
  1. Клонируйте репозиторий примера git clone https://github.com/yandexmobile/yandexmapkit-android.git
  2. В папке yandexmapkit-sample находится пример приложения который через gradle зависимость подключает мапкит
  3. Данные проекты уже настроены для работы в среде Eclipse
  4. Импортируйте данные проекты в среду Eclipse или Android Studio
  5. Выполняете Gradle Sync для проекта.
  6. Подставьте свой API ключ во все layout где используется объект MapView
  7. Всё готово к запуску тестового проекта

Запуск из командной строки.

Миграция с первой версии

  1. При создании OverlayItem необходимо в конструкторе вместо объекта Bitmap передавать Drawable, можно воспользоваться new BitmapDrawable(you_bitmap)
  2. При создании объекта BalloonItem необходимо в конструкторе передавать Context (необходимый для загрузки ресурсов)
  3. Исправить использования интерфейса с OnBallonListener на OnBalloonListener и добавить новые методы из данного интерфейса
  4. Исправить имя метода у BalloonItem с setOnBallonListener на setOnBalloonViewClickListener
  5. Необходимо изменить логику работы интерфейса OnBalloonListener метода onBallonClick на onBalloonViewClick

Интеграция с Яндекс.Картами

Документация по интеграции с мобильными Яндекс.Картами выложена на tech.yandex.ru

Также у этого проекта есть:

  • Wiki, в которой содержится полезная информация о Yandex Map Kit.
  • JavaDoc, который находится в yandexmapkit-library/doc. В нем содержится описание классов и методов Yandex Map Kit.

Если вы хотите сообщить об ошибке или предложить идею в развитии, то напишите об этом, пожалуйста, в Issues.

Источник

Yandex maps java android

A flutter plugin for displaying yandex maps on iOS and Android.

Disclaimer: This project uses Yandex Mapkit which belongs to Yandex
When using Mapkit refer to these terms of use

Generate your API Key

  1. Go to https://developer.tech.yandex.com
  2. Create a MapKit mobile SDK key

Initializing for iOS

  1. Add import YandexMapsMobile to ios/Runner/AppDelegate.swift
  2. Add YMKMapKit.setApiKey(«YOUR_API_KEY») inside func application in ios/Runner/AppDelegate.swift
  3. Specify your API key in the application delegate ios/Runner/AppDelegate.swift
  4. For Flutter version less than 1.22 add io.flutter.embedded_views_preview inside tag in ios/Runner/Info.plist
  5. Uncomment platform :ios, ‘9.0’ in ios/Podfile
Читайте также:  Хонор 10 лайт андроид или нет

For Swift 4.0 and lesser

For Swift 4.2 and greater

Initializing for Android

  1. Add dependency implementation ‘com.yandex.android:maps.mobile:4.0.0-full’ to android/app/build.gradle
  2. Add permissions and to android/app/src/main/AndroidManifest.xml
  3. Add import com.yandex.mapkit.MapKitFactory; to android/app/src/main/. /MainActivity.java / android/app/src/main/. /MainActivity.kt
  4. MapKitFactory.setApiKey(«YOUR_API_KEY»); inside method onCreate in android/app/src/main/. /MainActivity.java / android/app/src/main/. /MainActivity.kt
  5. Specify your API key in the application delegate android/app/src/main/. /MainActivity.java / android/app/src/main/. /MainActivity.kt

For Java projects

For Kotlin projects

For usage examples refer to example app

This project only supports Android V2 embedding. V1 support has been completly dropped. If you are creating a new flutter project then you are automatically using V2 and don’t have to worry. Other projects are strongly recommended to migrate to V2. See this page for more details.

YandexMapkit always works with one language only.
Due to native constraints after the application is launched it can’t be changed.

Currently native library doesn’t support Silicon Mac.
If you receive this type of error

Add in your projects Build Settings in section Excluded Architectures for Debug this line — arm64
This way XCode won’t try to build for Silicon Macs iOS Simulators

Источник

Запуск Android‑приложения Яндекс.Карты

Информация, приведенная в этом разделе, актуальна для мобильного приложения Яндекс.Карты версии 4.0 и выше.

Мобильные Яндекс.Карты для платформы Android можно запустить из Java‑приложения и со страницы, отображаемой в браузере. Для запуска используется URL-схема yandexmaps . При запуске приложение Яндекс.Карты может выполнить следующие действия.

В разделе Поддержка схемы geo приведена информация о том, как открыть карту, используя другую URI-схему. При таком способе запуска у пользователя будет возможность выбрать, какое приложение открыть.

Открыть карту

Показать карту можно с помощью URL вида:

Координаты центра карты (долгота, широта).

Масштаб карты. Задается целым числом от 1 до 18, где 1 — наименее подробный масштаб (весь мир), а 18 — наиболее подробный из возможных.

Область показа. Через запятую указывается размер области по долготе и широте (в градусах). Например, чтобы задать область показа шириной 10,5 градусов, нужно указать: spn=10.5,10.5 .

Центр области показа задается с помощью параметра ll (центр карты).

Если уже задан параметр z (масштаб), то spn игнорируется.

Тип карты и информация о пробках.

Тип карты: map (схема), sat (спутник), skl (гибрид), pmap (народная карта).

Показать загруженность магистралей: trf (слой «пробки»). Можно указать только слой пробок или комбинировать этот слой и тип карты. В этом случае значения параметра указываются через запятую. Например: l=map,trf .

Координаты центра карты (долгота, широта).

Масштаб карты. Задается целым числом от 1 до 18, где 1 — наименее подробный масштаб (весь мир), а 18 — наиболее подробный из возможных.

Область показа. Через запятую указывается размер области по долготе и широте (в градусах). Например, чтобы задать область показа шириной 10,5 градусов, нужно указать: spn=10.5,10.5 .

Центр области показа задается с помощью параметра ll (центр карты).

Если уже задан параметр z (масштаб), то spn игнорируется.

Тип карты и информация о пробках.

Тип карты: map (схема), sat (спутник), skl (гибрид), pmap (народная карта).

Показать загруженность магистралей: trf (слой «пробки»). Можно указать только слой пробок или комбинировать этот слой и тип карты. В этом случае значения параметра указываются через запятую. Например: l=map,trf .

Источник

Оцените статью