InDevices.ru
InDevices.ru — новейшие разработки в области устройств, роботы, обзор гаджетов
Устанавливаем Google maps и Яндекс Карты на Android
от admin
Прежде чем производить различные действия над своим устройством рекомендуем прочитать данную статью полностью
Содержание
- Что потребуется
- Инструкция
- Стоит обратить внимание
- Советы
- Что потребуется
- Инструкция
- Стоит обратить внимание
- Советы
Установка Google maps
1. Ваш гаджет с доступом в интернет;
2. Компьютер (опционально).
1. Первое и, в принципе, последнее, что нужно сделать – зайти на сервис Google play ввести в поиске Google maps.
2. Браузер выдаст вам похожую картинку:
4. После установки вас попросят указать важные для вас места, маршруты.
Стоит обратить внимание
Если у вас вдруг возникнут проблемы с установкой карт Google через Google play, не отчаивайтесь, достаточно ввести адрес www.google.com/mobile/maps/ в ваш браузер и установить карты таким же образом, как было указано выше. Если же и здесь вас подстерегут неприятности, можете пройти по этой ссылке, используя браузер вашего ПК, и со страницы отправить ссылку для закачки на ваш телефон прямо по мобильному номеру.
Обсудите со своими друзьями, знакомыми, какие из рассматриваемых карт подойдут вам больше всего.
Установка Яндекс.Карты
1.Ваш гаджет с доступом в интернет;
1. Яндекс.Карты мало чем отличаются от Google maps в установке. Заходим в Google play, даем команду поисковой системе найти Яндекс.Карты.
2. Знакомый интерфейс не подвел – вам осталось нажать на кнопку «Установить», после чего проделать операции для удобства в самом приложении (назначение маршрутов, мест положения и т.д.).
Стоит обратить внимание
В случае возникновения проблем, Яндекс.Карты так же не бросают своих пользователей.
Введя в мобильный браузер ссылку m.ya.ru/ymm, вы сможете также установить приложение. Если же и этот вариант не подходит, пройдите на своем ПК по ссылке mobile.yandex.ru/apps/maps/android, внизу страницы введите ваш номер телефона, чтобы получить нужную ссылку прямо на ваш телефон, подождав несколько секунд.
Существует мнение, что Яндекс.Карты намного лучше проработаны для стран СНГ. Используйте это в своих целях.
Источник
Переходим с Google Maps на Yandex MapKit
Недавно довелось перевести приложение с использования Google Maps API v1 на Yandex MapKit.
По субъективному мнению большинства Yandex карты для России имеют более высокую детализацию, и поэтому, если ваше приложение ориентировано только на Росиию или ex-USSR и Турцию (в общем на те страны где Yandex есть), то имеет смысл рассмотреть возможность использования MapKit’а.
Приложение имеет следующую функциональность: карта с точками объектов на ней и возможностью поиска этих точек по адресу, отображением текущего местоположения и зумом. По каждой точке можно тапнуть и увидеть всплывающий баллун, содержащий дополнительную информацию о точке. При тапе на отдельном баллуне открывается новая активити с детальной информацией о данной точке и куском карты, отображающим только одну эту единственную точку.
Начнем… Идем на github и забираем оттуда библиотеку. Если вы подумали, что раз библиотека распространяется через GitHub, то она OpenSource, то тут вас ждет разочарование. Библиотека распространяется как Android Library Project + jar-файл с кучей обфусцированных классов, который лежит в папочке libs . Исходников нет, таким образом, заглянуть внутрь и понять что как работает мы не можем, а порой очень хочется, т.к. документация (в папке с библиотекой есть javadoc ) мягко говоря плохая: описание существующего API минимально, а многие методы не документированы вообще. Поэтому лежащий по соседсвту с библиотекой sample проект очень пригодится.
Кстати не пугайтесь обилия открытых задач на гитхабе. Это не обязательно баги — это такой способ задать вопрос в комьюнити по использованию библиотеки. Какого-нибдуь форума или отдельно выделенного места для подобных вопросов не существует. Есть вопрос? Создай issue!
Для получения ключа необходимо отправить запрос в тех. поддержку яндекса, а до тех пор пока его нам не выдали, в качестве debug -ключа можно использовать ключ вида 1234567890 (Спасибо sample-проекту, в документации об этом ни слова). К слову о ключах — здесь нас ожидает первый сюрприз: MapView не читает ключ из файла ресурсов, поэтому если у вас есть несколько лейаутов, содержащих внутри MapView , то ключ придется копировать в каждый из MapView , вынести его в файл конфигурации и доступаться к нему через @string/api_key не удастся. Эта загадка отняла у меня кучу времени, соответствующая задача была создана давным давно, но как видите за 3 месяца ситуация не изменилась. В общем, скорость реакции поддержки Yandex’а пугает.
Итак, после получения либы, первым делом решено было собрать sample-project и поиграть с ним. В репозитории лежат файлики Eclipse проекта, я же использую IntelliJ IDEA, поэтому первым делом необходимо было создать и настроить проект из существующих исходников. Здесь поджидал сюрприз — я досих пор так и не понял до конца в чем было дело, но ситуация была следующая: проект нормально компилировался и упаковывался в apk , но затем в рантайме при попытке перехода на любую из активитей падал с ошибкой string resource not found (дословный текст ошибки сейчас не помню). В файлах библиотеки лежит пустой R -файл заглушка, рискну предпложить, что проблема была в том, что IDEA по каким-то причинам в финальный apk -файл запаковывала именно его, что и приводило к дальнейшим ошибкам. Проблема решилась удалением из зависимостей sample-project модуля библиотеки и его повторным добавлением.
Казалось бы, обе библиотеки имеют схожее API и переход не должен отнять слишком много времени: и там и там MapView , и там и там MapController , и там и там GeoPoint … Но на этом сходства заканчиваются. Несмотря на одинаковые имена классов методы называются по разному и не для каждого метода из Google API существует его прямой аналог из MapKit. Например, в MapKit’е остутствует метод, позволяющий получить координаты ViewPort ‘а (видимой области карты), поэтому его придется реализовывать самостоятельно — через преобразование экранных ( ScreenPoint ) координат в глобальные ( GeoPoint ) — тыц. Экранные координаты нужно отсчитывать не относительно экрана, а относительно самого MapView .
В Google Maps баллун (сплывающее вью при тапе по точке) один элемент вместе с самой точкой, в MapKit’е — это отдельный объект. Поэтому логику работы баллунами придется переписать почти полностью.
В Google API GeoPoint хранит координаты в виде пары int ‘ов — это longitude / latutude * 1E6 , у Yandex’а это double longitude и latitude. С одной стороны, использование int ‘ов вместо double ‘ов позволяет сэкономить пару байт памяти и ускорить вычисления связанные с координатами (целочисленные операции всегда быстрее операций с плавающей точкой). С дургой стороны, это наводняет код конструкциями вида: *1E6 , /1E6 . В общем, здесь я ставлю плюсик Yandex’у, без постоянных умножений/делений на 1E6 с API работать удобнее, а соотношение удобства к выигришу в производительности, по-моему, в данной ситуации не велико.
Еще одной сложностью стало непредсказуемое поведение Balloon ‘ов. Дело в том, что время от времени открываемые баллуны отображаются под другими OverlayItem ‘ами и оказываются перекрытыми. При этом метод setPriority , который есть у всех отображаемых на карте элементах никакого влияния не оказывает. Как выяснилось позже причина не правильного переопределения метода compareTo . Данный метод используется при показе баллуна для сортировки объектов в z-плоскости. Ни документация, ни пример не содержат никакой информации о данной проблеме, данная зависимость вообще была установлена совершенно случайно в ходе экспериментов.
Ну и напоследок еще одно значительное отличие Yandex MapKit от Google Maps это то, что MapKit не поддерживает прямой геокодинг, только обратный. Т.е. библиотека предоставляет способ преобразовать географичиеские координаты (lat/long) в адрес или название места (см. класс GeoCode ). А вот в обратную сторону — улицу или город в координаты не умеет, поэтому прямой геокодинг придется реализовывать самостоятельно, например, с использованием того же Yandex Maps Web API. Google же умеет это делать сразу в обе стороны.
В заключение хотелось бы сказать, что в целом, впечатление от использования Yandex Maps положительные, API достаточно удобное, возможностей для моих задач оказалось достаточно, но основной минус — документация. Будем надеятся, что Яндекс все-таки приведет все в порядок.
Источник
Интеграция карт в ваше 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 весьма схож:
Как можно видеть, процесс интеграции карт в приложения довольно простой, а спектр использования довольно широк.
Более подробно можно ознакомиться ниже.
Определение собственной позиции
Чтобы немного расширить пример, приложу кусок кода:
Но для использования этого кода, в манифесте следует указать следующее разрешение:
Источник
Яндекс.Карты 10.7.3
Яндекс.Карты — сервис навигации при помощи Android-коммуникатора от крупнейшей российской поисковой системы. Вы сможете находить различные объекты, видеть ситуацию на дорогах крупных городов, узнавать ваше местоположение и направление движения. Местоположение можно узнать тремя разными способами: при помощи GPS, по базовым станциям вашего мобильного оператора, а также по точкам доступа Wi-Fi вокруг вас.
Кроме этого Яндекс.Карты для Android умеют показывать как карту города, так и изображение со спутника. Также есть возможность записи треков ваших передвижений на местности.
Источник