>

Пакеты Conan>

maplibre-native

maplibre-native

Кроссплатформенная библиотека для отображения интерактивных карт, созданная как форк Mapbox GL Native с открытой лицензией. Она предоставляет мощный движок для рендеринга векторных карт с поддержкой пользовательских стилей, анимаций и аппаратного ускорения. Библиотека позволяет создавать современные картографические приложения для нативных платформ с высокой производительностью и гибкостью.

Особенности

  • поддержка векторных тайлов в форматах Mapbox Vector Tiles (MVT) и GeoJSON;
  • аппаратное ускорение рендеринга через OpenGL (Android, Linux, Windows) и Metal (iOS/macOS);
  • динамическая стилизация карт с использованием JSON-стилей, совместимых с Mapbox GL;
  • поддержка 3D-эффектов, анимаций и плавных переходов;
  • оффлайн-карты и кэширование тайлов.

Основные компоненты

MapLibre Native состоит из нескольких ключевых модулей, которые обеспечивают загрузку данных, рендеринг карт и взаимодействие с пользователем (подробнее с документацией можно ознакомиться здесь).

Загрузка и обработка тайлов

Библиотека поддерживает загрузку векторных и растровых тайлов из различных источников, включая удаленные серверы, локальные файлы и базы данных. Движок оптимизирует загрузку и кэширование тайлов для минимизации использования сети и памяти.

Основные функции работы с тайлами:

  • Поддержка протоколов HTTP/HTTPS для загрузки тайлов;
  • Загрузка тайлов из локальных источников (MBTiles, файловая система);
  • Кэширование тайлов в памяти и на диске;
  • Поддержка тайловых схем (xyz, tms, wms-c);
  • Динамическая подгрузка тайлов при панорамировании и масштабировании.

Стилизация и оформление карт

MapLibre Native использует стили в формате JSON, совместимые с Mapbox GL, что позволяет определять внешний вид всех элементов карты: дорог, зданий, меток, водных объектов и других слоев. Стили могут быть изменены динамически во время выполнения.

Возможности стилизации:

  • Векторные стили с использованием выражений (expressions) для условного оформления;
  • Поддержка пользовательских шрифтов и иконок;
  • Градиенты, тени, свечения и другие графические эффекты;
  • Анимация переходов между состояниями стилей;
  • Поддержка переменных и функций для динамического изменения стилей.

Рендеринг и графический движок

Движок рендеринга использует низкоуровневые графические API (OpenGL ES, Metal) для отрисовки векторных данных с высокой производительностью. Он поддерживает сложные визуальные эффекты, 3D-преобразования и плавную анимацию.

Графические возможности:

  • Аппаратное ускорение рендеринга на поддерживаемых платформах;
  • Поддержка 3D-зданий и рельефа (через высотные карты);
  • Сглаживание и антиалиасинг для улучшения качества изображения;
  • Эффекты освещения и тени для 3D-объектов;
  • Оптимизированная отрисовка большого количества объектов.

Взаимодействие с пользователем

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

Функции взаимодействия:

  • Панорамирование (drag), масштабирование (pinch, double-tap);
  • Вращение карты (rotation gesture);
  • Наклон (pitch) для перехода в 3D-вид;
  • Обработка кликов и тапов на объекты карты;
  • События для программируемого управления картой.

Географические данные и источники

MapLibre Native поддерживает различные источники географических данных, включая векторные тайлы, растровые изображения, GeoJSON и пользовательские источники. Данные могут быть загружены как из стандартных сервисов, так и из пользовательских источников.

Поддерживаемые источники данных:

  • Векторные тайлы (MVT) из Mapbox, OpenStreetMap и других поставщиков;
  • Растровые тайлы (PNG, JPEG, WebP);
  • GeoJSON данные для отображения пользовательских объектов;
  • Изображения (ImageSource) для наложения растровых изображений на карту;
  • Видео (VideoSource) для наложения видео на географические координаты.

Производительность и оптимизация

Библиотека оптимизирована для работы на мобильных устройствах и в средах с ограниченными ресурсами. Включает такие оптимизации, как отложенная загрузка, уровень детализации (LOD) и эффективное использование памяти.

Оптимизации производительности:

  • Отложенная загрузка тайлов вне видимой области;
  • Динамическое управление уровнем детализации в зависимости от масштаба;
  • Батчинг и инстансинг для уменьшения количества draw calls;
  • Оптимизированные алгоритмы определения видимых объектов (frustum culling);
  • Поддержка многопоточного декодирования тайлов.

Платформенная интеграция

MapLibre Native предоставляет нативные API для каждой поддерживаемой платформы, что позволяет легко интегрировать библиотеку в существующие приложения. Доступны обертки для различных языков программирования и фреймворков.

Поддерживаемые платформы и интеграции:

  • Android: Java и Kotlin API, интеграция с Android Views;
  • iOS/macOS: Objective-C и Swift API, поддержка UIKit и AppKit;
  • Linux: C++ API, интеграция с Qt и другими фреймворками;
  • Windows: C++ API, поддержка Win32 и UWP;
  • React Native: компоненты для кросс-платформенной разработки;
  • Flutter: плагин для использования в приложениях Flutter.

Оффлайн-карты и локальное хранение

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

Оффлайн-возможности:

  • Загрузка и кэширование тайлов для определенных регионов;
  • Поддержка формата MBTiles для локального хранения тайлов;
  • Управление кэшем тайлов (очистка, обновление, мониторинг);
  • Использование предварительно загруженных стилей и ресурсов.

Использование в проекте

Документация по использованию Conan-пакетов для разработки приложений для ОС Аврора.

На сервере Conan библиотеки заранее собраны и размещены под различные версии ОС Аврора 4 и ОC Аврора 5. Для данных версий представлены архитектуры armv7hl, aarch64 и x84_64.

Библиотеку можно использовать в проекте с помощью данного conanfile.py

from conan import ConanFile

class Application(ConanFile):
    settings = "os", "compiler", "arch", "build_type"
    generators = "PkgConfigDeps"

    requires = (
        "maplibre-native/5.2.0@aurora",
    )    

Процесс локальной сборки описан в документации.

maplibre-native

MapLibre Native - Interactive vector tile maps for iOS, Android and other platforms.
Лицензия
BSD-2-Clause license
Версия
Автор
Vladislav Larionov <vladislav.larionov@fruct.org>
Скачать
armv7
2.73 Mb
MD5: 96d9dbd536bea662b16106bc6895836f
Updated: 04.09.2025, 13:39:35
armv8
3 Mb
MD5: ca86ed6f18a6e8ad726e8fa0e72778f8
Updated: 04.09.2025, 13:39:23
x86_64
3.24 Mb
MD5: 9bc34631fa4b4040bfd4762e23a34d04
Updated: 04.09.2025, 13:39:38
Использование в проекте

Мы используем cookies для персонализации сайта и его более удобного использования. Вы можете запретить cookies в настройках браузера.

Пожалуйста ознакомьтесь с политикой использования cookies.