React Native Leaflet: Мощная картографическая библиотека для мобильных приложений
Опубликовано 24 сентября 2025 AntonSeagull — 2 min
Когда мы разрабатываем веб-приложения, у нас есть отличная библиотека Leaflet.js — легкая, гибкая и мощная. Она предоставляет все необходимые инструменты для работы с картами: маркеры, полилинии, полигоны, различные типы слоев и многое другое.
Но что происходит, когда мы переходим к разработке мобильных приложений на React Native? Стандартные решения для карт в React Native часто ограничены в функциональности:
- react-native-maps — хорошая библиотека, но с ограниченными возможностями кастомизации
- Mapbox — мощная, но дорогая и сложная в настройке
- Google Maps — требует API ключи и имеет ограничения
Решение: React Native Leaflet Plus
Именно поэтому я создал react-native-leaflet-plus — библиотеку, которая приносит всю мощь Leaflet.js в мир React Native приложений.
🎯 Ключевые особенности
Полная поддержка Leaflet.js
- Все возможности популярной веб-библиотеки Leaflet
- Знакомый API для веб-разработчиков
- Богатый набор функций из коробки
Векторные карты
- Встроенная поддержка Protomaps
- Высокое качество отображения на любых экранах
- Меньший объем данных для загрузки
Интерактивное редактирование
- Редактирование полигонов и прямоугольников
- Drag & drop функциональность
- События для обработки пользовательских действий
Производительность
- Эффективное управление памятью
- Оптимизированный рендеринг через WebView
- Поддержка больших наборов данных
🚀 Простота использования
Библиотека спроектирована с учетом простоты использования. Вот как легко добавить карту в ваше приложение:
import React from 'react';
import { View, StyleSheet } from 'react-native';
import { LeafletMap, Marker, Polyline } from 'react-native-leaflet-plus';
export default function MapScreen() {
return (
<View style={styles.container}>
<LeafletMap
style={styles.map}
options={{
center: [55.7558, 37.6176], // Москва
zoom: 13,
}}
tileLayer={{
url: 'https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png',
options: {
attribution: '© OpenStreetMap contributors',
},
}}
>
<Marker
uniqueId="marker1"
latlng={[55.7558, 37.6176]}
options={{
title: 'Москва',
}}
onPress={() => console.log('Маркер нажат!')}
/>
<Polyline
uniqueId="route1"
latlngs={[
[55.7558, 37.6176],
[55.7522, 37.6156],
[55.75, 37.62],
]}
options={{
color: 'blue',
weight: 3,
}}
/>
</LeafletMap>
</View>
);
}
🎨 Гибкость и кастомизация
Векторные карты с Protomaps
<LeafletMap
protomapsLayer={{
url: 'https://api.protomaps.com/tiles/v3.json?key=YOUR_KEY',
flavor: 'light',
}}
/>
Кастомные маркеры
<Marker
uniqueId="custom-marker"
latlng={[55.7558, 37.6176]}
options={{
icon: {
divIcon: {
html: '<div style="background: red; width: 20px; height: 20px; border-radius: 50%;"></div>',
iconSize: [20, 20],
},
},
}}
/>
Интерактивное редактирование
<Rectangle
uniqueId="editable-rect"
latlngs={[
[55.7, 37.6],
[55.8, 37.7],
]}
options={{
editable: true,
color: 'blue',
}}
onEdit={(event) => {
console.log('Прямоугольник отредактирован:', event.latlngs);
}}
/>
📱 События и программное управление
Библиотека предоставляет богатый набор событий и методов для программного управления картой:
<LeafletMap
onMove={(event) => console.log('Карта перемещена:', event.latlng)}
onZoom={(event) => console.log('Масштаб изменен:', event.zoom)}
onLoad={() => console.log('Карта загружена')}
ref={mapRef}
/>;
// Программное управление
mapRef.current?.flyTo([55.7558, 37.6176], 15);
mapRef.current?.setZoom(10);
mapRef.current?.fitBounds([
[55.7, 37.6],
[55.8, 37.7],
]);
🛠️ Установка и настройка
Установка библиотеки проста:
npm install react-native-leaflet-plus react-native-webview @react-native-async-storage/async-storage
🎯 Когда использовать React Native Leaflet Plus
Библиотека идеально подходит для:
- Навигационных приложений — с поддержкой маршрутов и маркеров
- Геопространственной визуализации — отображение данных на картах
- Интерактивных карт — с возможностью редактирования
- Приложений с векторными картами — высокое качество отображения
- Проектов, требующих гибкости — когда стандартные решения недостаточны
🚀 Будущее библиотеки
React Native Leaflet Plus активно развивается и включает:
- ✅ Полная поддержка TypeScript
- ✅ Богатая документация с примерами
- ✅ Поддержка всех основных компонентов Leaflet
- ✅ Оптимизация производительности
- ✅ Регулярные обновления и исправления
📚 Заключение
Если вы ищете мощное, гибкое и простое в использовании решение для карт в React Native, react-native-leaflet-plus — это именно то, что вам нужно. Библиотека объединяет лучшие стороны веб-разработки с возможностями мобильных приложений.
Попробуйте библиотеку в своем проекте:
Сделано с ❤️ для сообщества React Native