ДО: Простые линии между точками по прямой
ПОСЛЕ: Реальные маршруты по настоящим дорогам с помощью OSRM
- Реальные автомобильные маршруты
- Автоматическая прокладка по дорогам
- Цветовая кодировка по дням
- Бесплатный OSRM сервер
- 3 типа маршрутов:
- 🚗 На машине - автомобильные дороги
- 🚶 Пешком - пешеходные дорожки
- 🚴 На велосипеде - велосипедные дорожки
- Переключение типов в реальном времени
- Информация о расстоянии и времени
# В папке client_app
npm install leaflet-routing-machine<!-- В RoutePlannerPage.vue -->
import RouteMap from '../components/RouteMapWithRouting.vue'<!-- В RoutePlannerPage.vue -->
import RouteMap from '../components/RouteMapAdvanced.vue'- Сервер: https://router.project-osrm.org
- Бесплатно: Не требует API ключей
- Надежно: Работает без регистрации
- Глобально: Покрытие по всему миру
| Профиль | Описание | Скорость | Дороги |
|---|---|---|---|
driving |
Автомобильные маршруты | Быстро | Все дороги |
walking |
Пешеходные маршруты | Медленно | Тротуары, дорожки |
cycling |
Велосипедные маршруты | Средне | Велодорожки |
- Цвета: Каждый день свой цвет
- Стиль линий:
- Сплошные для авто
- Пунктир для пешеходов
- Толщина: 4-5px для хорошей видимости
// Создание маршрута
const routingControl = L.Routing.control({
waypoints: waypoints,
router: L.Routing.osrmv1({
serviceUrl: 'https://router.project-osrm.org',
profile: 'driving' // 'walking' | 'cycling'
}),
lineOptions: {
styles: [{
color: '#00c2ff',
weight: 4,
opacity: 0.8
}]
},
addWaypoints: false,
createMarker: () => null, // Используем свои маркеры
show: false // Скрываем панель инструкций
}).addTo(map).on('routesfound', (e) => {
const routes = e.routes
if (routes && routes[0]) {
const summary = routes[0].summary
console.log(`${(summary.totalDistance / 1000).toFixed(1)} км`)
console.log(`${Math.round(summary.totalTime / 60)} мин`)
}
})- Реалистичность: Маршруты по настоящим дорогам
- Точность: Учет расстояния и времени
- Гибкость: Разные типы передвижения
- Визуализация: Понятные цветовые индикаторы
- Бесплатно: Никаких API ключей
- Просто: Легкая интеграция
- Надежно: Стабильный OSRM сервер
- Расширяемо: Легко добавить новые функции
- Информация о маршруте: Расстояние, время, стоимость топлива
- Альтернативные маршруты: Показывать несколько вариантов
- Пробки: Интеграция с Яндекс.Пробки
- Озвучивание: Голосовые подсказки
- Офлайн-карты: Работать без интернета
- Кастомные маркеры: Иконки типов мест
- Анимация: Движение по маршруту
- Сохранение: Экспорт/импорт маршрутов
- ML оптимизация: Умные рекомендации маршрутов
- Социальные функции: Делиться маршрутами
- Интеграция: Навигаторы, такси
- Монетизация: Платные доп. функции
- Скорость обновления: Карты обновляются периодически
- Трафик: Нет учета пробок в реальном времени
- Ограничения: Есть лимиты запросов (но щедрые)
| Сервис | Стоимость | Качество РФ | Сложность |
|---|---|---|---|
| OSRM | Бесплатно | Хорошее | Низкая |
| Яндекс | Платно | Отличное | Средняя |
| Платно | Хорошее | Средняя | |
| Mapbox | Платно | Хорошее | Средняя |
Компоненты полностью адаптивны:
- Контролы: Адаптируются под экран
- Карта: Изменяет высоту
- Кнопки: Увеличиваются для тачей
- Подсказки: Переносятся на новые строки
// Тестовые координаты (Краснодар)
const testPoints = [
{ lat: 45.0355, lon: 38.9753 }, // Центр
{ lat: 45.0448, lon: 38.9763 }, // Парк
{ lat: 45.0284, lon: 38.9731 } // Музей
]- ✅ Маршруты строятся корректно
- ✅ Цветовая схема работает
- ✅ Переключение профилей работает
- ✅ Мобильная адаптация OK
- ✅ Производительность приемлемая
Пользователи теперь видят реальные маршруты по дорогам вместо прямых линий! Это значительно улучшает пользовательский опыт и делает планирование путешествий более реалистичным.
Готово к использованию! 🚀