544 слова | 2 минуты
Интерактивная Карта
Веб-приложение для визуализации точек на карте с возможностью поиска и навигации по городам России.
Обзор
Это интерактивная карта на базе Яндекс.Карт с удобным интерфейсом для просмотра и управления точками на карте. Приложение предоставляет функционал поиска адресов, быстрой навигации по городам и динамического отображения видимых точек.
Ключевые возможности
- Интерактивная карта на базе Яндекс.Карт API
- Отображение множественных точек с метками
- Поиск по адресу с геокодированием
- Быстрая навигация по городам (Москва, Санкт-Петербург, Новосибирск)
- Динамический список видимых точек на карте
- Skeleton loader для плавной загрузки
- Консоль логирования всех событий
- Адаптивный дизайн на Bootstrap 5
Функционал
1. Навигация по городам
Три предустановленных кнопки для быстрого перехода:
- Москва - центр карты: 55.7558, 37.6173
- Санкт-Петербург - центр карты: 59.9343, 30.3351
- Новосибирск - центр карты: 55.0084, 82.9357
При клике на кнопку карта анимированно перемещается к выбранному городу с увеличением (zoom: 12).
2. Поиск по адресу
Поле поиска использует геокодирование Яндекс.Карт:
- Введите адрес в поле поиска
- Нажмите Enter или потеряйте фокус
- Карта переместится к найденному адресу
- На карте появится синяя метка с названием адреса
Примеры запросов:
- "Красная площадь, Москва"
- "Невский проспект, 1"
- "Новосибирск, площадь Ленина"
3. Точки на карте
На карте отображается 10 предустановленных точек, распределенных по трем городам:
| Город | Количество точек |
|---|---|
| Москва | 2 точки |
| Санкт-Петербург | 2 точки |
| Новосибирск | 6 точек |
Взаимодействие с точками:
- Клик на метку - открывает балун с названием
- Клик на карточку внизу - центрирует карту на точке
- При движении карты список карточек обновляется автоматически
4. Динамический список точек
Под картой отображаются карточки только тех точек, которые видны в текущих границах карты:
Точка 5
Координаты: 55.01, 82.93
Особенности:
- Автоматическое обновление при перемещении/масштабировании карты
- Hover-эффекты для лучшей визуализации
- Клик по карточке перемещает карту к точке
5. Система логирования
Консоль внизу страницы отображает все события в реальном времени:
[14:23:45]: Инициализация карты...
[14:23:46]: API Яндекс.Карт загружен
[14:23:46]: Карта создана с центром в Москве
[14:23:46]: Добавлено 10 точек на карту
[14:23:47]: Карта полностью загружена и готова к работе
[14:24:15]: Переход к городу: Санкт-Петербург
[14:24:20]: Видимых точек: 2
[14:25:03]: Поиск адреса: "Красная площадь"
[14:25:04]: Найдено: Красная площадь (55.7539, 37.6208)
Технические детали
Используемые технологии
- Яндекс.Карты API 2.1 - основа карты и геокодирование
- Bootstrap 5.3.2 - UI фреймворк
- Vanilla JavaScript - логика приложения
- CSS3 Animations - skeleton loader и эффекты
Skeleton Loader
Плавная загрузка с анимированным скелетоном:
.skeleton {
background: linear-gradient(90deg, #f0f0f0 0px, #e0e0e0 40px, #f0f0f0 80px);
background-size: 200px 100%;
animation: skeleton-loading 1.5s infinite;
}
Отображается для:
- Карты (500px высота)
- Списка карточек (3 заглушки)
Структура данных точек
const points = [
{
id: 1,
name: "Точка 1",
coords: [55.75, 37.57]
},
// ... остальные точки
];
Поля:
id- уникальный идентификаторname- название точкиcoords- координаты [широта, долгота]
Визуальные элементы
Метки на карте:
- Красные метки (
islands#redIcon) - предустановленные точки - Синяя метка (
islands#blueIcon) - результат поиска
Стили карточек:
- Белый фон с тенью
- Hover-эффект: поднятие и увеличение тени
- Синяя рамка при наведении
- Плавные переходы (transition: 0.3s)
Консоль:
- Темная тема (#1e1e1e фон)
- Зеленый текст (#00ff00) в стиле терминала
- Автоматическая прокрутка к последнему сообщению
- Временные метки для каждого события
Примеры использования
Сценарий 1: Просмотр точек в Москве
- Откройте страницу (по умолчанию центр - Москва)
- Увидите 2 красные метки
- Внизу отобразятся 2 карточки с точками
- Кликните на любую карточку для навигации
Сценарий 2: Поиск адреса и добавление метки
- Введите в поиск "Эрмитаж, Санкт-Петербург"
- Нажмите Enter
- Карта переместится к Эрмитажу
- Появится синяя метка с названием
- В консоли отобразится лог поиска
Сценарий 3: Исследование Новосибирска
- Нажмите кнопку "Новосибирск"
- Карта переместится с анимацией
- Отобразятся 6 точек в области
- Масштабируйте карту для изменения видимых точек
- Список карточек обновится автоматически
Сценарий 4: Отслеживание событий
- Откройте консоль внизу страницы
- Выполняйте различные действия:
- Переключение городов
- Поиск адресов
- Клики на точки
- Наблюдайте логи в реальном времени с временными метками
Настройка и расширение
Добавление новых точек
Отредактируйте массив points в JavaScript:
const points = [
{ id: 11, name: "Новая точка", coords: [55.77, 37.58] },
// добавьте свои точки...
];
Добавление новых городов
Добавьте кнопку в HTML:
<button class="city-btn" data-coords="56.8389,60.6057">Екатеринбург</button>
Изменение стиля меток
Замените preset в коде создания Placemark:
preset: 'islands#greenIcon' // зеленая метка
preset: 'islands#yellowIcon' // желтая метка
preset: 'islands#nightIcon' // ночной стиль
Настройка начального положения
Измените параметры создания карты:
map = new ymaps.Map("map", {
center: [59.93, 30.34], // Санкт-Петербург
zoom: 12, // больше увеличение
controls: ['zoomControl', 'fullscreenControl'] // добавить контролы
});