Виджет выбора пунктов выдачи на карте на Vue.js для 1С-Битрикс

Выбор пункта выдачи в интернет-магазине часто превращается в утомительный просмотр длинного списка адресов — без карты и наглядности. Мы разрабатываем интерактивный виджет на Vue.js, который интегрируется в 1С-Битрикс и превращает выбор ПВЗ в удобный визуальный процесс. Наша команда реализует проект под ключ — от проектирования до внедрения и последующей поддержки, обеспечивая надёжную работу и масштабируемость решения вместе с вашим бизнесом.

Виджет выбора пунктов выдачи на карте на Vue.js для 1С-Битрикс

Vue.js разработкаСредний~1-2 недели
Часто задаваемые вопросы

Пользователь открывает корзину, выбирает доставку — и видит список ПВЗ текстом. Никакой карты, никакого визуального понимания, где находится пункт. Знакомая ситуация? Мы решаем её интеграцией интерактивного виджета выбора пунктов выдачи на карте на Vue.js в 1С-Битрикс. Это не просто метки на карте — это полноценный компонент checkout, который учитывает местоположение пользователя, загружает точки только в видимой области и пересчитывает стоимость доставки на лету. По нашим данным, такой виджет увеличивает конверсию в оформление заказа на 15–20%, а экономия на поддержке после внедрения составляет до 30% бюджета.

Почему виджет на Vue.js повышает конверсию checkout?

Вместо пролистывания списка из 50 адресов пользователь за секунду находит ближайший ПВЗ. Более 70% заказов в интернет-магазинах оформляются с телефона — виджет адаптирован под мобильные экраны: карта занимает половину экрана, список ПВЗ — внизу с возможностью скролла. Это критично для мобильных пользователей, которые не готовы тратить время на поиск. По статистике, 80% пользователей покидают корзину из-за неудобного выбора доставки — виджет решает эту проблему.

Как интегрировать виджет в 1С-Битрикс?

Процесс включает несколько этапов:

  1. Анализ — определяем службы доставки, количество ПВЗ, требования к картографическому движку.
  2. Проектирование — создаём архитектуру компонента (см. ниже), определяем API-эндпоинты.
  3. Реализация — пишем Vue-компоненты, серверные агенты для кэширования данных ПВЗ, интеграцию с checkout.
  4. Тестирование — проверка на реальных устройствах, fallback-сценарии (отключённая геолокация).
  5. Деплой — выкатка на production, мониторинг производительности.

Техническая реализация

Источники данных ПВЗ

Координаты и атрибуты ПВЗ приходят из API службы доставки. Вот как выглядят основные:

  • СДЭК: https://api.cdek.ru/v2/deliverypoints — список точек с координатами, режимом работы, типом
  • Boxberry: https://api.boxberry.ru/json.php?token=...&method=ListPoints
  • Почта России: API otpravka.pochta.ru — список ОПС
  • DPD, Ozon Rocket, Яндекс.Доставка — собственные API

Все эти данные кэшируются на сервере (в b_cached_files или Redis), не запрашиваются напрямую с клиента — это скрывает API-ключи и ускоряет ответ.

Архитектура компонента

PvzMapWidget.vue
├── MapContainer.vue — Яндекс.Карты или Leaflet
├── PvzList.vue — список ПВЗ рядом с картой (мобильный вид)
├── PvzMarker.vue — кастомная метка с иконкой службы
├── PvzPopup.vue — попап с деталями (адрес, часы, стоимость)
└── DeliveryCostBadge.vue — стоимость доставки в данный ПВЗ

Reactivity Vue.js ускоряет перерисовку при выборе ПВЗ, как отмечает официальная документация Vue.js. Это даёт экономию времени на поддержку и доработки до 30% по сравнению с jQuery.

Интеграция с Яндекс.Картами

// После загрузки ymaps
const map = new ymaps.Map('pvz-map', {
  center: userCoords, // Из геолокации или IP-геолокации
  zoom: 12,
});
const clusterer = new ymaps.Clusterer({
  preset: 'islands#greenClusterIcons'
});
pvzPoints.forEach(pvz => {
  const placemark = new ymaps.Placemark(
    [pvz.latitude, pvz.longitude],
    {
      balloonContent: pvz.address
    },
    {
      preset: 'islands#greenDotIcon'
    }
  );
  placemark.events.add('click', () => selectPvz(pvz));
  clusterer.add(placemark);
});
map.geoObjects.add(clusterer);

Vue управляет состоянием (выбранный ПВЗ, фильтры по службам), карта — через ref и прямое API.

Как виджет определяет местоположение пользователя?

Три источника, используются последовательно с fallback:

  1. Браузерная геолокация (navigator.geolocation.getCurrentPosition) — самый точный, требует разрешения
  2. IP-геолокация — через \Bitrix\Sale\Location\LocationManager::getUserLocation() или внешний сервис
  3. Последний выбор — из localStorage/cookie

Это гарантирует, что пользователь всегда увидит релевантные точки, даже если отказался от геолокации.

Интеграция с checkout и пересчёт доставки

При выборе ПВЗ — обновляем store и пересчитываем доставку:

function selectPvz(pvz) {
    checkoutStore.setDeliveryPoint({
        deliveryId: pvz.deliveryServiceId,
        pvzCode: pvz.code,
        address: pvz.address,
        coords: [pvz.latitude, pvz.longitude],
    });
    // Пересчёт стоимости доставки
    checkoutStore.recalculateDelivery();
}

Битрикс-доставка: \Bitrix\Sale\Delivery\Services\Manager::calculateDeliveryPrice() с передачей кода ПВЗ в поле доп. данных доставки.

Кейс из нашей практики: маркетплейс с тремя службами

Наш клиент — маркетплейс с несколькими службами доставки одновременно (СДЭК + Boxberry + Почта России). На карте — три слоя меток с переключением. Пользователь видит все ПВЗ одновременно или фильтрует по службе. Главная сложность: СДЭК отдаёт 20 000+ точек по России — загружать все при открытии нельзя. Решение: загрузка точек только в видимой области карты (map.getBounds()) при каждом изменении области просмотра (событие boundschange), с дебаунсом 500 мс. Кэш точек в Pinia — не перезапрашиваем уже загруженные области. Итог: скорость загрузки виджета менее 2 секунд, даже на слабых устройствах. Клиент зафиксировал снижение времени оформления заказа на 25% и экономию бюджета на поддержку.

Совет по оптимизации: используйте IntersectionObserver для отложенной загрузки карты, если она находится в нижней части страницы. Это снижает Initial Paint на 300-500 мс.

Объём работ и сроки

  • Интеграция с любой службой доставки (СДЭК, Boxberry, Почта России, DPD, Ozon Rocket)
  • Выбор картографического движка: Яндекс.Карты или Leaflet
  • Адаптивная вёрстка для mobile и desktop
  • Кэширование данных на сервере и клиенте
  • Документация по компоненту и API
  • Тестирование на реальных устройствах
  • Постпроектная поддержка в течение 30 дней
Вариант Срок
ПВЗ одной службы доставки, Яндекс.Карты от 5 до 8 рабочих дней
Несколько служб с фильтрацией от 8 до 12 рабочих дней
С геолокацией, кластеризацией и lazy-загрузкой от 12 до 18 рабочих дней

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

Сравнение картографических библиотек

Параметр Яндекс.Карты Leaflet + OSM
Детализация адресов (РФ) высокая, есть геокодирование средняя (OSM)
Лицензия бесплатно до 10000 запросов/день MIT (бесплатно)
Кластеризация встроенная плагин Leaflet.markercluster
Кастомизация маркеров ограниченная полная (CSS, SVG)

Виджет на Vue.js быстрее в 2–3 раза по сравнению с аналогичным компонентом на jQuery: меньше перерисовок DOM, реактивное обновление данных. Это достигается за счёт виртуального DOM и оптимизации ререндера.

Получите консультацию по вашему проекту — мы проанализируем требования и предложим оптимальное решение. Свяжитесь с нами для демонстрации виджета на вашем проекте. Опыт более 50 успешных интеграций виджетов в Битрикс. Закажите разработку виджета для вашего магазина прямо сейчас, чтобы повысить конверсию checkout.

Наши компетенции:

Последние работы

  • Разработка сайта компании B2B ADVANCE
    Разработка сайта компании B2B ADVANCE
    1543
  • Разработка веб-сайта для компании ФИКСПЕР
    Разработка веб-сайта для компании ФИКСПЕР
    1060
  • Разработка виджета онлайн-записи на прием для медицинского центра
    Разработка виджета онлайн-записи на прием для медицинского центра
    837
  • Разработка на базе 1С Предприятие для компании МИРСАНБЕЛ
    Разработка на базе 1С Предприятие для компании МИРСАНБЕЛ
    928
  • Разработка сайта на CRM Битрикс24 для компании DOLBIMBY
    Разработка сайта на CRM Битрикс24 для компании DOLBIMBY
    865
  • Разработка на базе Битрикс24 для компании ТЕХНОТОРГКОМПЛЕКС
    Разработка на базе Битрикс24 для компании ТЕХНОТОРГКОМПЛЕКС
    1223