Интеграция виджета выбора пункта выдачи на карте

Наша компания занимается разработкой, поддержкой и обслуживанием сайтов любой сложности. От простых одностраничных сайтов до масштабных кластерных систем построенных на микро сервисах. Опыт разработчиков подтвержден сертификатами от вендоров.
Разработка и обслуживание любых видов сайтов:
Информационные сайты или веб-приложения
Сайты визитки, landing page, корпоративные сайты, онлайн каталоги, квиз, промо-сайты, блоги, новостные ресурсы, информационные порталы, форумы, агрегаторы
Сайты или веб-приложения электронной коммерции
Интернет-магазины, B2B-порталы, маркетплейсы, онлайн-обменники, кэшбэк-сайты, биржи, дропшиппинг-платформы, парсеры товаров
Веб-приложения для управления бизнес-процессами
CRM-системы, ERP-системы, корпоративные порталы, системы управления производством, парсеры информации
Сайты или веб-приложения электронных услуг
Доски объявлений, онлайн-школы, онлайн-кинотеатры, конструкторы сайтов, порталы предоставления электронных услуг, видеохостинги, тематические порталы

Это лишь некоторые из технических типов сайтов, с которыми мы работаем, и каждый из них может иметь свои специфические особенности и функциональность, а также быть адаптированным под конкретные потребности и цели клиента

Предлагаемые услуги
Показано 1 из 1 услугВсе 2065 услуг
Интеграция виджета выбора пункта выдачи на карте
Средняя
~2-3 рабочих дня
Часто задаваемые вопросы
Наши компетенции:
Этапы разработки
Последние работы
  • image_website-b2b-advance_0.png
    Разработка сайта компании B2B ADVANCE
    1214
  • image_web-applications_feedme_466_0.webp
    Разработка веб-приложения для компании FEEDME
    1161
  • image_websites_belfingroup_462_0.webp
    Разработка веб-сайта для компании БЕЛФИНГРУПП
    852
  • image_ecommerce_furnoro_435_0.webp
    Разработка интернет магазина для компании FURNORO
    1041
  • image_crm_enviok_479_0.webp
    Разработка веб-приложения для компании Enviok
    823
  • image_bitrix-bitrix-24-1c_fixper_448_0.png
    Разработка веб-сайта для компании ФИКСПЕР
    815

Интеграция виджета выбора пункта выдачи на карте

Виджет выбора ПВЗ на карте — обязательный элемент оформления заказа для интернет-магазинов, предлагающих самовывоз. Покупатель видит все доступные точки выдачи на карте, может отфильтровать по типу (постамат/ПВЗ), режиму работы и расстоянию от текущего местоположения.

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

Точки выдачи приходят из нескольких источников:

  • СДЭК APIGET /v2/deliverypoints?city_code={id}&type=PVZ
  • DHL, BoxBerry, 5Post — собственные API каждого провайдера
  • Яндекс.Доставка — endpoint для получения списка ПВЗ
  • Собственные точки магазина — хранятся в БД

Агрегация: все точки объединяются в единый формат и хранятся в таблице pickup_points. Обновление — scheduled job раз в 6–12 часов.

pickup_points (
  id, provider, external_id, name, address, city_id,
  lat, lng, working_hours (jsonb),
  max_weight, max_dimensions (jsonb),
  has_fitting_room, has_cash, has_card,
  is_active, updated_at
)

Карта: Яндекс.Карты vs Google Maps vs Leaflet

Яндекс.Карты JS API 3.0 — лучший выбор для российских пользователей, точнее определяет адреса. Бесплатный лимит 1000 запросов/сутки, далее платно.

Leaflet + OpenStreetMap — бесплатно, без ограничений, хуже геокодирование в РФ. Хорошо подходит для корпоративных сайтов с небольшим трафиком.

Google Maps — высокая стоимость для РФ, часть функций ограничена.

Реализация кластеризации

При 2000+ точек на карте нужна кластеризация — иначе браузер тормозит.

// Яндекс.Карты
import { Clusterer } from '@yandex/ymaps3-clusterer';

const clusterer = new Clusterer({
    clusterize: (coordinates, zoom) => {
        return zoom < 12; // кластеризовать при масштабе меньше 12
    }
});

Для Leaflet — плагин leaflet.markercluster.

Фильтры и поиск

Фильтры на UI:

  • Тип: постамат / ПВЗ с сотрудником
  • Режим работы: сейчас открыт / 24 часа
  • Сервисы: примерочная / оплата картой / наложенный платёж
  • Максимальный вес посылки

Поиск по адресу реализуется через геокодирование — вводит адрес, получает координаты, карта центрируется, подсвечиваются ближайшие точки.

Передача данных в заказ

После выбора точки в форме заказа сохраняются:

{
    "pickup_type": "pvz",
    "pickup_point_id": 1234,
    "pickup_provider": "cdek",
    "pickup_external_id": "MSK001",
    "pickup_address": "Москва, ул. Арбат, 5"
}

Эти данные передаются в API службы доставки при создании отправления.

Мобильная адаптация

На мобильных устройствах карта часто конкурирует с прокруткой страницы. Решение: кнопка "развернуть карту" → карта открывается на полный экран через CSS position: fixed. Либо — отдельная bottom sheet с картой поверх контента.

Определение города пользователя

По умолчанию карта центрируется на город, который определяется через:

  1. IP-геолокация (api.sypexgeo.net или ipgeolocation.io)
  2. Геолокация браузера (с разрешения пользователя)
  3. Адрес доставки из предыдущего заказа (для авторизованных)

Срок разработки: 3–5 рабочих дней для виджета с агрегацией нескольких провайдеров, кластеризацией и фильтрами.