Вопрос или проблема
Мне нужно создать приложение для Android, которое будет работать офлайн с пользовательской картой, способной отображать растровые и векторные слои, используя данные из локального хранилища устройства. Также необходимы функции рисования, редактирования, удаления и измерения геометрий. Желательно работать с проекциями, отличными от WGS 84, так как все данные находятся в EPSG:3346.
Я использовал OpenLayers для веб-ориентированной пользовательской карты, так что, думаю, я мог бы сказать, что ищу что-то вроде OpenLayers, но для Android.
Большинство необходимых функций можно получить, используя приложение Avenza Maps. На уровне подписки Pro можно загружать собственные растровые слои, а также шейп-файлы. Можно рисовать и измерять. Не уверен, можно ли редактировать или удалять геометрии.
На базовом (бесплатном) уровне можно добавлять до трех растровых карт и неограниченное количество векторных слоев в формате KML.
Ответ или решение
Создание Android-приложения для оффлайн-работы с пользовательской картой — это задача, требующая использования подходящих фреймворков и библиотек, особенно если вы хотите реализовать функционал работы с растровыми и векторными слоями, а также обеспечивать возможность рисования, редактирования и измерения геометрий. Учитывая, что вся ваша геодезическая информация представлена в системе координат EPSG:3346, а не в стандартной WGS 84, необходимо найти решение, которое поддерживает работу с различными системами координат.
Возможные решения для разработки Android приложения
-
Mapsforge
- Описание: Это библиотека с открытым исходным кодом, предназначенная для рендеринга карт на Android устройствах. Она поддерживает оффлайн-рендеринг и работу с векторными данными, что позволяет вам загружать и отображать пользовательские карты прямо с устройства.
- Геометрии: Mapsforge позволяет рисовать и обрабатывать пользовательские данные на карте.
- Поддержка сторонних проекций: Для использования EPSG:3346 может потребоваться дополнительная настройка, но библиотека имеет гибкие настройки для расписания проекций.
-
OSMDroid
- Описание: OSMDroid предоставляет возможности для загрузки и отображения OpenStreetMap карт оффлайн, а также позволяет интегрировать их с другими источниками данных.
- Функционал: Можно интегрировать растровые и векторные слои через дополнительную обработку данных во время импорта через KML или другие форматы.
- Поддержка: Коррекция системы координат может потребовать доработки при импорте данных в нужный формат.
-
Mapbox SDK
- Описание: Mapbox предоставляет мощную SDK для Android с поддержкой оффлайн-карт. Это коммерческое решение, предлагающее широкий спектр возможностей, в том числе работа с кастомными проекциями и поддержка растровых и векторных данных.
- Функционал: Вы можете создать функционал редактирования и измерения геометрий, используя кастомный рендеринг и плагины Mapbox.
- Проекции: Поддержка кастомных проекций, потенциально подходящих для EPSG:3346, реализуется через кастомизацию стиля карты.
Внедрение и доработка
После выбора фреймворка можно приступить к разработке функционала, удовлетворяющего ваши требования:
- Растровые и векторные слои: Обеспечьте поддержку нужных форматов карт и слоев.
- Инструменты для геометрий: Реализуйте инструменты для рисования, редактирования и удаления геометрий, интегрируя их с API фреймворка.
- Проекции и геодезия: Убедитесь в правильной обработке систем координат через трансформацию данных к целевой проекции.
Выбор фреймворка, прежде всего, зависит от конкретных задач, бюджета и опыта команды. Каждое из приведенных решений предоставляет разные преимущества и может быть адаптировано под нужды вашего GIS-приложения.