Стиль интерфейса платформы Google Карт скоро изменится. Будет обновлена стандартная цветовая палитра, а сами карты станут удобнее. Все стили карт автоматически обновятся в марте 2025 г. Дополнительные сведения о доступности этих изменений и о том, как включить их раньше, приведены в статье Новый стиль карты для платформы Google Maps.
Хотите добавить на свои карты дополнительные функции? Библиотека утилит Maps SDK для Android – это библиотека классов с открытым исходным кодом, которые можно использовать в самых разных приложениях. Репозиторий на GitHub содержит классы-утилиты и демонстрационное приложение с примером реализации для каждого класса.
В этом видеоролике Крис Броадфут рассказывает о библиотеке утилит, уделяя основное внимание декодированию ломаных линий, сферической геометрии и всплывающим подсказкам.
Быстрая настройка
Чтобы установить библиотеку утилит Maps SDK для Android, следуйте инструкциям из руководства по настройке.
Утилиты
Как импортировать данные GeoJSON на карту
Объекты можно сохранять в формате GeoJSON и с помощью этой утилиты отрисовывать их в виде слоя поверх карты.
Чтобы добавить на карту данные в формате GeoJSON, вызовите метод addLayer().
Также можно добавлять отдельные объекты, вызывая метод addFeature() и передавая ему объект GeoJsonFeature.
Эта утилита позволяет преобразовывать объекты 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() – возвращает координаты широты и долготы точки, которая находится на определенном отрезке между двумя заданными точками. Эту функцию можно использовать, к примеру, для анимации маркера между двумя точками.
Проверьте, поддерживается ли это местоположение в Просмотре улиц.
Класс StreetViewUtil позволяют проверять, поддерживается ли местоположение в Просмотре улиц. Чтобы избежать ошибок при добавлении панорам в Просмотре улиц в приложение Android, вызовите эту утилиту метаданных и добавляйте панорамы, только если получите ответ OK.
[null,null,["Последнее обновление: 2024-08-13 UTC."],[[["The Maps SDK for Android Utility Library is an open-source library offering advanced features for enhancing Google Maps in Android applications."],["It provides utilities for importing GeoJSON and KML data, adding heatmaps, clustering markers, managing multiple map layers, and working with polylines."],["The library includes features for customizing markers with bubble icons and performing spherical geometry calculations for distances, areas, and headings."],["Developers can quickly set up the library by following the provided setup guide and access detailed documentation for each utility."],["A demo app is included in the GitHub repository showcasing the usage of the various classes and functionalities within the library."]]],[]]