- Интеграция карт в ваше Android-приложение
- Yandex
- Определение собственной позиции
- max-im’sblog
- четверг, 15 ноября 2012 г.
- Пример использования яндекс карты SDK для ос Андроид.
- Подготовительный этап состоит из трех пунктов.
- Использование яндекс-карт в своем приложении.
- Android yandex maps webview
- Latest commit
- Git stats
- Files
- README.md
- Launch Yandex.Maps Android app
- Open map
- Запуск Android‑приложения Яндекс.Карты
- Открыть карту
Интеграция карт в ваше Android-приложение
Есть много разных идей, для реализации которых могут понадобиться карты на мобильных устройствах.
Возможности таких устройств позволяют довольно оперативно получать информацию о местоположении, графические данные и графические преобразования для отображения объёма ландшафта.
В данном статье я расскажу как интегрировать возможность просмотра карт для мобильных устройств на основе Android, на примере Yandex Карт и Google Maps.
Функционал библиотек этих компаний позволяет:
- Перемещать карту
- Изменять масштаб
- Изменять виды карт
- Получать события от карты
Начнём с отечественного производителя.
Yandex
Библиотеку Yandex MapKit можно скачать с GitHub’а, там же есть версия и для iOS.
Но прежде чем начать использовать, нам надо получить API-key, для этого идём на почту и пишем письмо в support@mobmaps.yandex.ru, указав в заголовке «Map Kit запрос API-ключа». В ответ вам пришлют письмо с указанием дополнительных ссылок на документацию, на правила использования и собственно с самим ключом в теле письма (а могут и не прислать, кстати).
Пока ждём письмо, берём библиотеку и прикрепляем её к проекту.
После долгого ожидания с кружкой кофе, знакомимся с содержимым письма и информации по ссылкам, берём ключик и пишем в вашем layout’е приложения следующий код:
где заместо «you are key» вставляем полученный ключ. Всё, карта есть.
Далее код показывает, как перемещать карту на заданную координату и использовать зум:
Для использования Google Maps надо совершить куда более изощрённые действия. Я расскажу, как получить debug-key для использования карт, но процесс получения release версии похоже несколько замороченней, но я release ещё не получал.
Для получения debug-key, надо найти ваше хранилище ключей, для отладки.
По-умолчанию, путь будет выглядеть примерно так:
Затем открываем командную строку, переходим в каталог, куда установлена Java:
где путь_до_хранилища_ключей — свой путь до debug.keystore (осторожно, возможны проблемы с пробелами в пути).
После чего в том же окне будет выведен md5-ключ после «Certificate fingerprint (MD5)».
Идём по ссылке и регистрируем код.
После чего Google сгенерирует с нужным кодом для layout и встроенным кодом, берём его и вставляем к себе в layout.
Далее нам, надо наш Activity представить в примерно следующем виде:
Замечу, что Activity наследован должен быть от MapActivity хранящийся в com.google.android.maps.MapActivity.
А в манифесте прописать между тегами вставить:
И не забыть, про разрешение доступа в интернет для приложения:
В остальном функционал GoogleMaps и YandexMapKit весьма схож:
Как можно видеть, процесс интеграции карт в приложения довольно простой, а спектр использования довольно широк.
Более подробно можно ознакомиться ниже.
Определение собственной позиции
Чтобы немного расширить пример, приложу кусок кода:
Но для использования этого кода, в манифесте следует указать следующее разрешение:
Источник
max-im’sblog
четверг, 15 ноября 2012 г.
Пример использования яндекс карты SDK для ос Андроид.
Задача: написать активити, в котором можно будет перемещая метку на карте, менять координаты и наоборот, меняя координаты в ручную, перемещать метку по карте.
Подготовительный этап состоит из трех пунктов.
1. Для работы с yandex maps SDK необходимо в файле манифеста приложения прописать разрешения на интернет, приблизительную геолокацию и чтение состояния телефона:
2. В папку проекта libs помещаем две папки из SDK яндекса:
и файл библиотеки:
Кроме этого, необходимо: создать папку xml в проекте и туда поместить map_layers.xml в папку layout поместить screen_buttons_layout.xml в папку drawable файлы zoom_minus_drawable.xml, zoom_plus_drawable.xml, find_me_drawable.xml а в drawable-hdpi файлы из этого списка
3. Для работы с апи яндекса необходимо получить ключ.
Все, теперь можно использовать яндекс-карты для решения нашей задачи
Использование яндекс-карт в своем приложении.
Главное тут это указать свой ключ в аттрибуте android:apiKey. Поля для ввода имеют следующие идентификаторы: editX и editY. С разметкой все. Для работы с координатами удобно написать вспомогательный класс Coordinate: класс реализует интерфейс Parcelable, позволяет получать координату в виде строки или в виде числа с плавающей точкой.
Вторым вспомогательным классом будет customOverlay расширяющий класс из SDK DragAndDropOverlay у него будет конструктор:
И один перезагруженный метод
Два пояснения, первое — при тапе по карте, карта сдвигается так, чтобы метка(тайл) переместился на место тапа, второй момент, это блокирование слушателя изменения текста на полях(флаг mFlgBlockedTextChange, его добавим позже), куда пишутся координаты, чтобы не было рекурсивного зацикливания: вы меняете положение тайла, тем самым вызываете изменение текста, а это изменение текста вызывает перемещение тайла. Ещё один вспомогательный класс CoordsInputFilter, необходим, чтобы вводимые в текстовые поля данные были координатами, записанными в современном варианте:
Класс использует регулярное выражения для контроля вводимых данных. Его можно самостоятельно оптимизировать
Перейдем к написанию класса главной активити. Объявим необходимые приватные поля. Два поля для ввода координат (EditText) и сама карта:
Метка(тайл) на карте, который можно будет таскать пальцем по карте, тем самым изменять координаты:
Слой на карте, его опишем чуть позже
Два вспомогательных инструмента, первый – для изменения самой карты, второй — для изменения слоей на карте:
Сами координаты:
Битмап метки(тайла), который ставиться на карту:
Разделитель дробной и целой части.
Вообще этот путь неправильный, но.. Тут две заминки, первая – на некоторых моделях самсунга на цифровой клавиатуре нельзя поставить запятую на русской локали, только точку и вторая – координаты представляются в градусах в виде десятичной дроби, с разделителем в виде точки, это написано в вики. Ещё необходим флаг, для блокировки слушателя изменения текста:
Теперь опишем самого слушателя, для координаты икс:
Для координаты игрек аналогичный слушатель, в принципе можно создать свой класс, расширяющий TextWatcher и использовать один его экземпляр для обоих координат. С полями все. Теперь напишем перезагрузку методов, участвующих в жизненном цикле активити, главный метод, когда создается активити:
Тут фишка, когда состояние несохранено, загружаются координаты из файла настроек, причем, если его нет, устанавливаются координаты пригорода города Парижа. Однако, если активити восстанавливается после уничтожения(изменение конфигурации, например, ориентации экрана), то координаты так же восстановятся, а не будут загружены из файла снова. В принципе, в этом примере это действие ускорит старт активити на ничтожную величину. При уничтожении активити, мы будем сохранять текущие координаты в файл настройки:
Единственное, что осталось сделать это добавить меню с ссылкой на лиц. соглашения яндекс.Карт. Для этого в проекте создадим директорию menu с файлом, описывающим наше меню:
Чтобы меню работало, в активити перезагрузим два метода. Один для создания самого меню:
А другой для отслеживания нажатия пункта меню:
Всё. После выгрузки проекта на устройство или эмулятор картинка будет похожей
На всякий случай, строка ресурса с идентификатором R.string.ya выглядит так: «Приложение использует Яндекс-карты, условия использования сервиса Яндекс.Карты: http://legal.yandex.ru/maps_termsofuse» ссылка должна быть обязательной! Если что-то не получилось, можно добыть исходники на github
Источник
Android yandex maps webview
Yandex Map Kit for Android
Latest commit
Git stats
Files
Failed to load latest commit information.
README.md
Эта версия больше не поддерживается, актуальную инфрмацию о новых версиях MapKit можно найти по ссылкам:
В этом репозитории находится тестовое приложение, демонстрирующее возможности Yandex Map Kit.
- Добавлено новое API уOverlayItem setOverlayItemListener #256
- Исправлена ошибка #253
- Исправлена ошибка #249
- Исправлена ошибка #240
- Исправлена ошибка #234
- Исправлена ошибка утечки #243
- Исправлена ошибка #240
- Добавили свойство в MapEvent isGesture() #237
- Исправлены ошибки при отображении карты
- Добавлен arm64-v8a и x86_64 архитектуры
- Исправлены ошибки отображения кнопок на карте
- Добавлен пример работы с запросом разрешений на получения геопозиции
- Исправлены ошибки, приводившие к падениям
- Удалены все запросы разрешений, кроме получения геопозиции
- Клонируйте репозиторий примера git clone https://github.com/yandexmobile/yandexmapkit-android.git
- В папке yandexmapkit-sample находится пример приложения который через gradle зависимость подключает мапкит
- Данные проекты уже настроены для работы в среде Eclipse
- Импортируйте данные проекты в среду Eclipse или Android Studio
- Выполняете Gradle Sync для проекта.
- Подставьте свой API ключ во все layout где используется объект MapView
- Всё готово к запуску тестового проекта
Запуск из командной строки.
Миграция с первой версии
- При создании OverlayItem необходимо в конструкторе вместо объекта Bitmap передавать Drawable, можно воспользоваться new BitmapDrawable(you_bitmap)
- При создании объекта BalloonItem необходимо в конструкторе передавать Context (необходимый для загрузки ресурсов)
- Исправить использования интерфейса с OnBallonListener на OnBalloonListener и добавить новые методы из данного интерфейса
- Исправить имя метода у BalloonItem с setOnBallonListener на setOnBalloonViewClickListener
- Необходимо изменить логику работы интерфейса OnBalloonListener метода onBallonClick на onBalloonViewClick
Интеграция с Яндекс.Картами
Документация по интеграции с мобильными Яндекс.Картами выложена на tech.yandex.ru
Также у этого проекта есть:
- Wiki, в которой содержится полезная информация о Yandex Map Kit.
- JavaDoc, который находится в yandexmapkit-library/doc. В нем содержится описание классов и методов Yandex Map Kit.
Если вы хотите сообщить об ошибке или предложить идею в развитии, то напишите об этом, пожалуйста, в Issues.
Источник
Launch Yandex.Maps Android app
This section applies to the Yandex.Maps mobile app, version 4.0 or higher.
You can launch mobile Yandex.Maps for Android from a Java app or browser page. Use the yandexmaps URL scheme to launch the app. Yandex.Maps can run the following actions on launch:
Support for geo scheme section shows how to open the map using a different URI scheme. With this method, the user can choose which app to open.
Open map
You can display the map using the following URL format:
Parameter | Data type | Description |
---|---|---|
Parameter | Data type | Description |
---|---|---|