Библиотека утилит Maps SDK для Android

Хотите добавить на свои карты дополнительные функции? Библиотека утилит Maps SDK для Android – это библиотека классов с открытым исходным кодом, которые можно использовать в самых разных приложениях. Репозиторий на GitHub содержит классы-утилиты и демонстрационное приложение с примером реализации для каждого класса.

В этом видеоролике Крис Броадфут рассказывает о библиотеке утилит, уделяя основное внимание декодированию ломаных линий, сферической геометрии и выноскам.

Быстрая настройка

Чтобы установить библиотеку утилит Maps SDK для Android, следуйте инструкциям из руководства по настройке.

Утилиты

Карта со слоем GeoJSON

Как импортировать данные GeoJSON на карту

Объекты можно сохранять в формате GeoJSON и с помощью этой утилиты отрисовывать их в виде слоя поверх карты. Чтобы добавить на карту данные в формате GeoJSON, вызовите метод addLayer(). Также можно добавлять отдельные объекты, вызывая метод addFeature() и передавая ему объект GeoJsonFeature.

Более подробные сведения приведены в документации утилиты Google Maps Android GeoJSON.

Карта со слоем KML

Как импортировать данные KML на карту

Эта утилита позволяет преобразовывать объекты KML в географические фигуры и добавлять их в виде слоя поверх карты. Чтобы добавить слой на карту, вызовите метод addLayerToMap(). Доступ к свойствам объекта KML можно получить путем вызова метода getProperties() для любого элемента Placemark, GroundOverlay, Document или Folder.

Более подробные сведения приведены в документации утилиты Google Maps Android KML.

Карта с тепловой картой

Как добавить тепловые карты на карту

Тепловые карты помогают пользователям понять распределение и относительную интенсивность точек данных на карте. На тепловых картах распределение данных визуализируется с помощью цветов и фигур, а не отдельных маркеров в каждой точке, о которой имеются данные. Создайте объект HeatmapTileProvider, передав ему коллекцию объектов LatLng, представляющих объекты на карте. Затем создайте новый объект TileOverlay, передав ему объект поставщика фрагментов тепловой карты, и добавьте мозаичное наложение на карту.

Более подробные сведения приведены в документации утилиты Google Maps Android для управления тепловыми картами.

Карта с выносками

Как настроить маркеры с выносками

Добавьте IconGenerator, чтобы добавить фрагменты с информацией в маркеры. Эта утилита позволяет создавать значки маркеров, похожие на информационные окна (обычные значки маркеров не могут содержать текст или другой контент). Преимуществом этого способа является возможность открыть одновременно несколько маркеров, тогда как информационные окна могут быть открыты только по одному. Вы также можете указать стиль маркеров, изменить ориентацию маркеров или контента, а также выбрать для маркера фоновое изображение или изображение в формате nine-patch.

Карта с кластеризованными маркерами

Как управлять кластерами маркеров

Класс ClusterManager позволяет управлять несколькими маркерами на разных уровнях масштабирования. Это означает, что на карту можно добавить большое количество маркеров без ухудшения ее удобочитаемости. Когда пользователь просматривает карту в большом масштабе, на ней отображаются отдельные маркеры. После уменьшения масштаба маркеры собираются в кластеры, что упрощает чтение карты.

Более подробные сведения приведены в документации утилиты Google Maps Android для управления кластерами.

Карта с несколькими слоями

Как добавить несколько слоев на одну карту

На карте можно одновременно показывать данные GeoJSON и KML, кластеры, а также созданные вами маркеры, ломаные линии и многоугольники. Также можно сделать эти слои интерактивными, добавив прослушиватель кликов на каждый слой. Просто создайте экземпляры классов MarkerManager, GroundOverlayManager, PolygonManager и PolylineManager и передайте их конструкторам классов GeoJsonLayer, KmlLayer, ClusterManager. Тогда с помощью перечисленных выше классов Manager можно будет напрямую добавлять на карту произвольные маркеры, ломаные линии и многоугольники.

Более подробные сведения приведены в документации утилиты Google Maps Android для управления несколькими слоями.

Карта с кодированной ломаной линией

Как кодировать и декодировать ломаные линии

Класс PolyUtil используется для преобразования кодированных ломаных линий и многоугольников в координаты широты и долготы, и наоборот.

В Google Картах координаты широты и долготы, которые определяют ломаную линию или многоугольник, хранятся в виде кодированной строки. Более подробные сведения приведены в статье о кодировании ломаных линий. Кодированные строки могут содержаться в ответах, которые вы получаете от API Google, например от Directions API.

С помощью класса PolyUtil из библиотеки утилит Maps SDK для Android можно преобразовать последовательность координат широты и долготы (объектов LatLng) в закодированную строку пути или декодировать такую строку в последовательность объектов LatLng. Это обеспечит функциональную совместимость с веб-службами Google Maps API.

Рассчитанное расстояние между двумя точками на карте

Как рассчитывать расстояния, площади и направления с помощью сферической геометрии

С помощью утилит сферической геометрии в классе SphericalUtil можно рассчитывать расстояние, площадь и направление по значениям широты и долготы. Вот некоторые методы, доступные в этой утилите:

  • computeDistanceBetween() – возвращает расстояние (в метрах) между двумя точками с заданными координатами широты и долготы.
  • computeHeading() – возвращает азимут (в градусах) между двумя точками с заданными координатами широты и долготы.
  • computeArea() – возвращает площадь (в квадратных метрах) фигуры с замкнутым контуром на поверхности Земли.
  • interpolate() – возвращает координаты широты и долготы точки, которая находится на указанной части расстояния между двумя указанными точками. Эту функцию можно использовать, к примеру, для анимации маркера между двумя точками.

Полный список методов этой утилиты приведен в справочной документации.