В этой статье рассказывается, как добавить базовую карту в приложение Android, когда вы уже настроили проект для использования Maps SDK для Android. После добавления карты вы можете изменить ее тип и функции.
Обзор
Maps SDK для Android поддерживает несколько классов, с помощью можно управлять жизненным циклом, функциями и данными карты в приложении. Эти классы поддерживают взаимодействие с пользователями на основе модели интерфейса Android. Например, вы можете задать исходное состояние карты и ее реакцию на жесты пользователя во время выполнения.
Основной интерфейс и классы для работы с картами:
GoogleMap – точка входа для управления перечисленными ниже функциями и данными. Приложение может получить доступ к объекту GoogleMap после того, как он был извлечен из объекта SupportMapFragment или MapView .
SupportMapFragment – фрагмент для управления жизненным циклом объекта GoogleMap .
MapView – представление для управления жизненным циклом объекта GoogleMap .
OnMapReadyCallback – интерфейс обратного вызова, который обрабатывает события и взаимодействия с пользователями для объекта GoogleMap .
Объект GoogleMap автоматически выполняет следующие операции:
подключение к Google Картам;
загрузка фрагментов карты;
отображение фрагментов на экране устройства;
отображение элементов управления (например, панорамирования и масштабирования);
изменение вида карты в ответ на жесты панорамирования и масштабирования.
Чтобы использовать в приложении объект GoogleMap , вам необходимо добавить объект SupportMapFragment или MapView в качестве контейнера для карты, а затем извлечь из этого контейнера объект GoogleMap . Поскольку классы-контейнеры являются производными от фрагмента или представления Android, они обеспечивают возможности управления жизненным циклом карты и работы с интерфейсом, доступные в своих базовых классах Android. Класс SupportMapFragment – более современный и часто используемый контейнер для объекта GoogleMap .
Ознакомьтесь с кодом
Приведенный ниже код взят из полного объекта activity (Java), которая используется в этом разделе при статическом добавлении фрагмента. Проект Android был создан на основе шаблона пустого проекта, а затем обновлен по инструкциям из этого руководства. После выполнения действий, описанных в этой статье, ваш код может отличаться от приведенного ниже. Это зависит от шаблона проекта.
Как добавить карту
В этом разделе рассказывается, как добавить базовую карту, используя фрагмент как контейнер. Вы также можете выбрать вариант с представлением. Пример: RawMapViewDemoActivity на GitHub.
Подготовка. Убедитесь, что вы выполнили действия, описанные в руководстве по конфигурации проекта, чтобы обеспечить поддержку Maps SDK для Android.
Добавьте объект SupportMapFragment в объект activity, который отвечает за обработку карты. Фрагмент можно добавить статически или динамически.
Реализуйте интерфейс OnMapReadyCallback .
Задайте файл шаблона в качестве представления контента.
Если вы добавили фрагмент статически, получите дескриптор фрагмента.
Зарегистрируйте обратный вызов.
Получите дескриптор объекта GoogleMap .
Добавьте объект SupportMapFragment
Объект SupportMapFragment можно добавить в приложение статически или динамически. Статически это сделать проще. Если же вы добавите фрагмент динамически, то сможете выполнять с ним дополнительные действия, например удалять или заменять код во время выполнения.
Как добавить фрагмент статически
В файле макета для объекта activity, который обеспечивает работу карты, выполните следующие действия:
Добавьте элемент fragment .
Добавьте объявление имени xmlns:map=»http://schemas.android.com/apk/res-auto» . Это позволит использовать изменяемые атрибуты XML для maps .
В элементе fragment задайте для атрибута android:name значение com.google.android.gms.maps.SupportMapFragment .
В элементе fragment добавьте атрибут android:id и задайте для него значение, соответствующее идентификатору ресурса R.id.map ( @+id/map ).
Полный пример кода для файла макета, где есть элемент fragment :
Как добавить фрагмент динамически
Выполните следующие действия для объекта activity:
Создайте экземпляр SupportMapFragment .
Выполните транзакцию, чтобы добавить фрагмент в объект activity. Подробнее…
Источник
Настройка библиотеки утилит Maps SDK для Android
В этой статье рассказывается, как настроить библиотеку утилит Maps SDK для Android и как запустить демонстрационное приложение, включенное в эту библиотеку.
Библиотека утилит Maps SDK для Android поддерживает уровни Android API 15 и выше. В качестве целевой версии API для сборки своего проекта всегда выбирайте Android API самого последнего уровня.
Шаг 1. Установите библиотеку утилит Maps SDK для Android
Добавьте в файл build.gradle своего приложения следующую зависимость:
Укажите одну из утилит библиотеки, например для кластеризации маркеров, создания тепловых карт или из прочих утилит.
Для библиотеки Maps SDK для Android доступна библиотека расширений Kotlin (KTX). В ней реализованы функции языка Kotlin (например, функции-расширения, именованные и стандартные аргументы), позволяющие создавать лаконичный и идиоматичный код Kotlin. Если вы не используете язык Kotlin при разработке, этот шаг можно пропустить.
Чтобы воспользоваться этой библиотекой, добавьте в файл build.gradle своего приложения следующую зависимость (помимо зависимости android-maps-utils ):
Шаг 3. Просмотрите исходный код библиотеки утилит Maps SDK для Android
Поскольку библиотека утилит является ПО с открытым исходным кодом, вы можете скачать код android-maps-utils, чтобы изменить его, просмотреть демонстрационное приложение или просто понять, как работает библиотека. Для этого либо клонируйте репозиторий (рекомендуется, чтобы получать автоматические обновления), либо скачайте ZIP-файл. Если вы хотите изменить код библиотеки, создайте ответвление репозитория.
В репозитории содержатся следующие компоненты:
Демонстрационное приложение в каталоге demo .
Библиотека утилит в каталоге library .
Библиотека утилит для Maps SDK для версии 3 (БЕТА) в каталоге library-v3 .
Различные файлы с информацией о лицензировании, списками соавторов и примечаниями.
Конфигурация сборки Gradle для использования с Android Studio.
Как запустить демонстрационное приложение
Репозиторий библиотеки утилит на GitHub содержит демонстрационное приложение с примером реализации для каждой утилиты. Чтобы запустить демонстрационное приложение на устройстве Android, выполните следующие действия:
Скачайте репозиторий любым из указанных выше способов.
В Android Studio выберите Файл > Создать > Импортировать проект.
Найдите каталог android-maps-utils, созданный при клонировании библиотеки утилит, и выберите его двойным кликом. Теперь Android Studio создаст проект.
Если вы используете устройство Android, а не эмулятор, включите режим разработчика. Затем подключите это устройство к компьютеру.
Выполните сборку и запуск демонстрационного приложения.
Приложение должно запуститься на устройстве Android и вывести список утилит, в том числе clustering, polyutil, heatmap и пр. Приложение также можно найти в списке приложений (оно будет иметь название Maps Utils Demo).
Except as otherwise noted, the content of this page is licensed under the Creative Commons Attribution 4.0 License, and code samples are licensed under the Apache 2.0 License. For details, see the Google Developers Site Policies. Java is a registered trademark of Oracle and/or its affiliates.
Источник
Библиотека утилит Maps SDK для Android
Хотите добавить на свои карты дополнительные функции? Библиотека утилит Maps SDK для Android – это библиотека классов с открытым исходным кодом, которые можно использовать в самых разных приложениях. Репозиторий на GitHub содержит классы-утилиты и демонстрационное приложение с примером реализации для каждого класса.
В этом видеоролике Крис Броадфут рассказывает о библиотеке утилит, уделяя основное внимание декодированию ломаных линий, сферической геометрии и выноскам.
Быстрая настройка
Чтобы установить библиотеку утилит Maps SDK для Android, следуйте инструкциям из руководства по настройке.
Утилиты
Как импортировать данные GeoJSON на карту
Объекты можно сохранять в формате GeoJSON и с помощью этой утилиты отрисовывать их в виде слоя поверх карты. Чтобы добавить на карту данные в формате GeoJSON, вызовите метод addLayer() . Также можно добавлять отдельные объекты, вызывая метод addFeature() и передавая ему объект GeoJsonFeature .
Как импортировать данные KML на карту
Эта утилита позволяет преобразовывать объекты KML в географические фигуры и добавлять их в виде слоя поверх карты. Чтобы добавить слой на карту, вызовите метод addLayerToMap() . Доступ к свойствам объекта KML можно получить путем вызова метода getProperties() для любого элемента Placemark, GroundOverlay, Document или Folder.
Как добавить тепловые карты на карту
Тепловые карты помогают пользователям понять распределение и относительную интенсивность точек данных на карте. На тепловых картах распределение данных визуализируется с помощью цветов и фигур, а не отдельных маркеров в каждой точке, о которой имеются данные. Создайте объект HeatmapTileProvider , передав ему коллекцию объектов LatLng , представляющих объекты на карте. Затем создайте новый объект TileOverlay , передав ему объект поставщика фрагментов тепловой карты, и добавьте мозаичное наложение на карту.
Как настроить маркеры с выносками
Добавьте IconGenerator , чтобы добавить фрагменты с информацией в маркеры. Эта утилита позволяет создавать значки маркеров, похожие на информационные окна (обычные значки маркеров не могут содержать текст или другой контент). Преимуществом этого способа является возможность открыть одновременно несколько маркеров, тогда как информационные окна могут быть открыты только по одному. Вы также можете указать стиль маркеров, изменить ориентацию маркеров или контента, а также выбрать для маркера фоновое изображение или изображение в формате nine-patch.
Как управлять кластерами маркеров
Класс ClusterManager позволяет управлять несколькими маркерами на разных уровнях масштабирования. Это означает, что на карту можно добавить большое количество маркеров без ухудшения ее удобочитаемости. Когда пользователь просматривает карту в большом масштабе, на ней отображаются отдельные маркеры. После уменьшения масштаба маркеры собираются в кластеры, что упрощает чтение карты.
Как добавить несколько слоев на одну карту
На карте можно одновременно показывать данные GeoJSON и KML, кластеры, а также созданные вами маркеры, ломаные линии и многоугольники. Также можно сделать эти слои интерактивными, добавив прослушиватель кликов на каждый слой. Просто создайте экземпляры классов MarkerManager , GroundOverlayManager , PolygonManager и PolylineManager и передайте их конструкторам классов GeoJsonLayer , KmlLayer , ClusterManager . Тогда с помощью перечисленных выше классов Manager можно будет напрямую добавлять на карту произвольные маркеры, ломаные линии и многоугольники.
Как кодировать и декодировать ломаные линии
Класс PolyUtil используется для преобразования кодированных ломаных линий и многоугольников в координаты широты и долготы, и наоборот.
В Google Картах координаты широты и долготы, которые определяют ломаную линию или многоугольник, хранятся в виде кодированной строки. Более подробные сведения приведены в статье о кодировании ломаных линий. Кодированные строки могут содержаться в ответах, которые вы получаете от API Google, например от Directions API.
С помощью класса PolyUtil из библиотеки утилит Maps SDK для Android можно преобразовать последовательность координат широты и долготы (объектов LatLng) в закодированную строку пути или декодировать такую строку в последовательность объектов LatLng. Это обеспечит функциональную совместимость с веб-службами Google Maps API.
Как рассчитывать расстояния, площади и направления с помощью сферической геометрии
С помощью утилит сферической геометрии в классе SphericalUtil можно рассчитывать расстояние, площадь и направление по значениям широты и долготы. Вот некоторые методы, доступные в этой утилите:
computeDistanceBetween() – возвращает расстояние (в метрах) между двумя точками с заданными координатами широты и долготы.
computeHeading() – возвращает азимут (в градусах) между двумя точками с заданными координатами широты и долготы.
computeArea() – возвращает площадь (в квадратных метрах) фигуры с замкнутым контуром на поверхности Земли.
interpolate() – возвращает координаты широты и долготы точки, которая находится на указанной части расстояния между двумя указанными точками. Эту функцию можно использовать, к примеру, для анимации маркера между двумя точками.
Полный список методов этой утилиты приведен в справочной документации.
Except as otherwise noted, the content of this page is licensed under the Creative Commons Attribution 4.0 License, and code samples are licensed under the Apache 2.0 License. For details, see the Google Developers Site Policies. Java is a registered trademark of Oracle and/or its affiliates.
Источник
Maps SDK для Android: краткое руководство
Вы можете создать приложение Android с картой, используя шаблон Google Карт для Android Studio. Если у вас уже есть проект Android Studio и вы хотите изменить его настройки, перейдите к описанию конфигурации.
Это краткое руководство предназначено для тех, кто имеет опыт разработки приложений для Android на языках Java или Kotlin.
Настройте среду разработки
Вам обязательно потребуется Android Studio. Если у вас нет этого инструмента, скачайте и установите его.
Добавьте в Android Studio SDK сервисов Google Play. Maps SDK для Android является частью SDK сервисов Google Play, доступного в SDK Manager.
Настройте устройство Android
Чтобы запустить приложение, в котором используется Maps SDK для Android, необходимо развернуть его на устройстве Android или в эмуляторе, основанном на Android 4.0 или более поздней версии и поддерживающем API Google.
Инструкции по работе с устройством Android вы можете найти здесь.
Чтобы воспользоваться эмулятором, вы можете создать виртуальное устройство и установить на него эмулятор с помощью Менеджера AVD (виртуальных устройств Android), который доступен Android Studio.
Создайте проект Google Карт
Откройте Android Studio и нажмите Create new project (Создать проект) в окне Welcome to Android Studio (Добро пожаловать в Android Studio).
В окне New Project (Новый проект) найдите категорию Phone and Tablet (Телефоны и планшеты). Выберите Google Maps Activity (Операция с Google Картами) и нажмите Next (Далее).
Заполните форму Google Maps Activity (Операция с Google Картами):
В поле Language (Язык) выберите Java или Kotlin. Maps SDK для Android полностью поддерживает оба этих языка. Дополнительную информацию о Kotlin вы можете найти здесь.
Укажите минимальную версию SDK. Это должна быть версия Android SDK, которую поддерживает ваше тестовое устройство.
Нажмите Finish (Готово).
Когда вы завершите создание проекта, Android Studio запустит Gradle для его сборки. Это может занять некоторое время. Когда сборка будет завершена, в Android Studio откроются файлы google_maps_api.xml и MapsActivity . Ваш объект activity может иметь другое название, если вы указали его при настройке.
Дополнительную информацию о создании проекта вы можете найти здесь.
Файл google_maps_api.xml содержит инструкции о том, как получить ключ Google Maps API и добавить его в файл. Не добавляйте ключ API в файл, поскольку это снижает безопасность. Вместо этого выполните инструкции из раздела ниже.
Настройки в Cloud Console
Выполните настройку Cloud Console на указанных ниже вкладках.
Шаг 1
Cloud Console
Чтобы приступить к созданию проекта, перейдите на страницу выбора проекта в консоли Google Cloud Console и нажмите Создать проект.
Убедитесь, что для проекта Google Cloud включены платежные функции.
Мы предлагаем бесплатную пробную версию с кредитом в размере 300 долл. США для использования Google Cloud, а также ежемесячный кредит на сумму 200 долл. США для работы на платформе Google Карт. Ознакомьтесь с информацией о кредитах в платежных аккаунтах и платежных функциях.
Cloud SDK
Прочитайте статьи о Google Cloud SDK, установке Cloud SDK и следующих командах:
Шаг 2
Для работы с платформой Google Карт вам потребуется включить API и SDK, которые будут использоваться в проекте.
Консоль
Cloud SDK
Прочитайте статьи о Google Cloud SDK, установке Cloud SDK и следующих командах:
Шаг 3
Этот шаг относится к процессу создания ключа API. Если у вас есть собственный ключ API, мы настоятельно рекомендуем настроить для него ограничения. Дополнительную информацию о том, как использовать ключи API для разных продуктов, вы найдете на этой странице.
Ключ API – это уникальный идентификатор, который используется для аутентификации запросов, связанных с вашим проектом. Он нужен для учета использования API и оплаты. С вашим проектом должен быть связан хотя бы один ключ API.
Чтобы создать его, выполните следующие действия.
Cloud Console
Откройте страницу Google Maps Platform > Credentials (Платформа Google Карт > Учетные данные).
На странице Учетные данные нажмите Создать учетные данные > Ключ API. Появится диалоговое окно с созданным ключом API.
Нажмите Close (Закрыть). Новый ключ API можно будет найти в разделе Ключи API на странице Учетные данные. Не забудьте настроить ограничения для ключа API, прежде чем использовать его в рабочей среде.
Cloud SDK
Прочитайте статьи о Google Cloud SDK, установке Cloud SDK и следующих командах:
Добавьте ключ API в приложение
В этом разделе рассказывается, как настроить безопасный вызов ключа API вашим приложением. Вводить ключ API в систему управления версиями нежелательно, поэтому мы рекомендуем хранить его в файле local.properties , который находится в корневом каталоге проекта. Подробнее о файле local.properties рассказывается в описании файлов свойств Gradle.
Чтобы вам было проще работать, используйте Secrets Gradle Plugin для Android.
Чтобы установить плагин и настроить хранение ключа API, выполните следующие действия:
В Android Studio откройте файл build.gradle корневого уровня и добавьте в элемент dependencies , принадлежащий элементу buildscript , указанный ниже код.
Откройте файл build.gradle уровня приложения и добавьте в элемент plugins указанный ниже код.
Сохраните файл и синхронизируйте проект с Gradle.
Откройте файл local.properties в каталоге уровня проекта и добавьте в этот файл приведенный ниже код. Укажите вместо YOUR_API_KEY свой ключ API.
Сохраните файл и синхронизируйте проект с Gradle.
В файле AndroidManifest.xml найдите раздел com.google.android.geo.API_KEY и измените android:value attribute следующим образом:
Примечание. Как показано выше, рекомендуемое имя метаданных для ключа API – com.google.android.geo.API_KEY . Ключ с таким именем может использоваться для аутентификации нескольких API созданных на основе Google Карт для платформы Android, включая Maps SDK for Android. Для обеспечения обратной совместимости API также поддерживает имя com.google.android.maps.v2.API_KEY . Это устаревшее имя обеспечивает аутентификацию только для Android Maps API версии 2. Приложение позволяет указать только одно из имен в метаданных ключа API. Если указаны оба имени, API вызывает исключение.
Проанализируйте код
Изучите код, содержащийся в шаблоне. В частности, просмотрите указанные ниже файлы в проекте Android Studio.
Файл activity для карты
Файл activity для карты – это основной операционный файл для приложения. Он содержит код для отображения карты и управления ей. По умолчанию такой файл называется MapsActivity.java . Если же в качестве языка для приложения вы выбрали Kotlin, он будет называться MapsActivity.kt .
Основные элементы файла activity
Объект SupportMapFragment управляет жизненным циклом карты и является родительским элементом для интерфейса приложения.
Объект GoogleMap предоставляет доступ к данным карты и ее представлению. Это основной класс в Maps SDK для Android. Дополнительную информацию об объектах SupportMapFragment и GoogleMap вы можете найти в этом руководстве.
Функция moveCamera центрирует карту по координатам LatLng (Сидней, Австралия). Как правило, при добавлении карты первым делом нужно изменить настройки местоположения и камеры: угол обзора, ориентацию карты, масштаб и т. п. Подробнее…
Функция addMarker добавляет маркер к координатам Сиднея. Подробнее…