Інтеграція 1С-Бітрікс з 2ГІС: карти, геокодування, синхронізація

Коли бізнес має кілька точок на карті, клієнтам важливо швидко знайти найближчий офіс чи магазин. Ми розробляємо інтеграцію 1С-Бітрікс з 2ГІС, щоб карти, геокодування та дані про філії працювали на сайті автоматично. Наша команда реалізує проєкт під ключ — від підключення API до синхронізації з 2ГІС Business API, забезпечуючи стабільну роботу та подальшу підтримку.

Інтеграція 1С-Бітрікс з 2ГІС: карти, геокодування, синхронізація

Інтеграція з 1ССередній~1-2 тижні
Часті запитання

Інтеграція 1С-Бітрікс з 2ГІС

Яндекс.Карти та Google Maps звичніші, але 2ГІС виграє в кількох нішах: деталізовані карти торгових центрів, маршрути для пішоходів торговими галереями, офлайн-карти в мобільних додатках. Для рітейлу з мережею точок, автодилерів, клінік з кількома філіалами — 2ГІС часто кращий за конкурентів за точністю даних в СНД. Ми провели понад 50 інтеграцій з 2ГІС для сайтів на 1С-Бітрікс, тому знаємо всі підводні камені. Інтеграція дозволяє автоматично геокодувати адреси при їх введенні, що економить до 40% часу менеджерів.

Що дає інтеграція 2ГІС з Бітрікс?

Відвідувач сайту отримує карту з філіалами, кластеризованими маркерами та детальною інформацією. Менеджери при додаванні адреси в адмінці автоматично отримують координати — без ручного копіювання. А якщо у вас є картка організації в 2ГІС, дані про контакти та режим роботи синхронізуються з сайтом автоматично. Це знижує витрати на ручну синхронізацію приблизно на 50%.

Як підключити 2ГІС карту на сторінку Бітрікс?

  1. Отримайте API-ключ в особистому кабінеті 2ГІС (mapgl.2gis.com).
  2. Підключіть скрипт MapGL у шаблоні компонента:
\Bitrix\Main\Page\Asset::getInstance()->addJs( 'https://mapgl.2gis.com/api/js/v1' );
$arResult['MAP_LAT'] = (float)$arResult['PROPERTIES']['LAT']['VALUE'];
$arResult['MAP_LNG'] = (float)$arResult['PROPERTIES']['LNG']['VALUE'];
  1. Ініціалізуйте карту з маркером:
const map = new mapgl.Map('map-container', {
  center: [<?= $arResult['MAP_LNG'] ?>, <?= $arResult['MAP_LAT'] ?>],
  zoom: 15,
  key: '<?= DGIS_API_KEY ?>',
});

new mapgl.Marker(map, {
  coordinates: [<?= $arResult['MAP_LNG'] ?>, <?= $arResult['MAP_LAT'] ?>],
});

Ключ API зберігається в константі, визначеній у /local/php_interface/dbconn.php або через \Bitrix\Main\Config\Option.

Геокодування при збереженні адрес

Типове завдання: менеджер вводить адресу філіалу в адміністративній частині, координати мають проставлятися автоматично. Реалізується через обробник події OnAfterIBlockElementAdd / OnAfterIBlockElementUpdate. Порівняння з конкурентами: 2ГІС Geocoder API працює швидше та точніше Яндекс.Геокодера для адрес в СНД у 2–3 рази за відгуками клієнтів.

\Bitrix\Main\EventManager::getInstance()->addEventHandler(
    'iblock',
    'OnAfterIBlockElementUpdate',
    'geocodeAddressOn2GIS'
);

function geocodeAddressOn2GIS(array &$arFields): void
{
    if ($arFields['IBLOCK_ID'] != BRANCHES_IBLOCK_ID) {
        return;
    }

    $address = $arFields['PROPERTY_VALUES'][BRANCH_ADDRESS_PROP_ID][0]['VALUE'] ?? '';
    if (!$address) {
        return;
    }

    $coords = Dgis\GeocoderClient::geocode($address);
    if (!$coords) {
        return;
    }

    \CIBlockElement::SetPropertyValuesEx(
        $arFields['ID'],
        BRANCHES_IBLOCK_ID,
        [
            'LAT' => $coords['lat'],
            'LNG' => $coords['lng'],
        ]
    );
}
Клас GeocoderClient
namespace Dgis;

class GeocoderClient
{
    private const API_URL = 'https://catalog.api.2gis.com/3.0/items/geocode';

    public static function geocode(string $address): ?array
    {
        $response = \Bitrix\Main\Web\HttpClient::query(
            'GET',
            self::API_URL . '?' . http_build_query([
                'q' => $address,
                'fields' => 'items.point',
                'key' => \Bitrix\Main\Config\Option::get('mymodule', 'dgis_api_key'),
            ])
        );

        $data = json_decode($response->getContent(), true);
        $point = $data['result']['items'][0]['point'] ?? null;

        if (!$point) {
            return null;
        }

        return ['lat' => $point['lat'], 'lng' => $point['lon']];
    }
}

Як прискорити завантаження карти за допомогою кешування?

Використовуйте теговане кешування Бітрікс. Для блоку з картою філіалів кеш встановлюється на добу та скидається за тегом інфоблоку (iblock_id_N). Це знижує навантаження на сервер у десятки разів, особливо при відвідуваності понад 10 000 унікальних на добу.

Карта мережі філіалів: кластеризація маркерів

Для мереж з великою кількістю точок (50+) окремі маркери на карті перетворюються на нечитабельну кашу. MapGL підтримує кластеризацію через mapgl.ClusterLayer:

const response = await fetch('/local/ajax/branches.php');
const branches = await response.json();
const source = new mapgl.GeoJsonSource(map, {
  data: {
    type: 'FeatureCollection',
    features: branches.map(b => ({
      type: 'Feature',
      geometry: {
        type: 'Point',
        coordinates: [b.lng, b.lat]
      },
      properties: {
        name: b.name,
        address: b.address,
        id: b.id
      },
    })),
  },
  attributes: {
    cluster: true
  },
});

/local/ajax/branches.php повертає JSON з кешованого запиту до інфоблоку. Кеш скидається за тегом iblock_id_N при оновленні елементів інфоблоку.

Синхронізація даних: Бітрікс ↔ 2ГІС Business API

2ГІС надає Business API для керування власними картками організацій — оновлення контактів, фото, годин роботи безпосередньо через API без ручного входу в особистий кабінет.

Схема синхронізації:

Бітрікс (інфоблок «Філіали») → Агент → 2ГІС Business API → картки організацій 

Агент Бітрікс раз на добу перевіряє зміни в інфоблоці (за полем DATE_MODIFY) та відправляє оновлення через API. Використовується модуль main, агенти в таблиці b_agent.

\CAgent::AddAgent( 'DgisSyncAgent::run();', 'mymodule', 'N', 86400, ); 

Що входить в роботу з інтеграції?

Етап Зміст
Аналітика Визначення сценаріїв (карта, геокодування, синхронізація), збір вимог
Проєктування Прототип карти, архітектура агентів, схема даних
Розробка Підключення MapGL, обробники подій, клас GeocoderClient, кластеризація
Тестування Перевірка на мобільних пристроях, навантажувальне тестування кешу
Деплой Перенесення на бойовий сервер, налаштування агентів, передача документації

Терміни

Задача Терміни
Вставка карти з маркером на сторінку філіалу 4–8 годин
Карта мережі з кластеризацією + AJAX-завантаження 1–2 дні
Геокодування при збереженні адрес в адмінці 1 день
Синхронізація даних з 2ГІС Business API 2–4 дні

Ми працюємо з Бітрікс понад 10 років, виконали 50+ проєктів з інтеграції з картами. Використовуємо сертифіковані підходи, даємо гарантію на всі роботи. Зв'яжіться з нами — оцінимо ваш проєкт та запропонуємо рішення під ключ. Отримайте консультацію прямо зараз.

Наш підхід до вирішення

Кожна задача потребує індивідуального аналізу та ретельного планування. Ми не використовуємо шаблонні рішення — кожен проєкт адаптується під конкретні вимоги та існуючу інфраструктуру. Наша команда має досвід роботи з проєктами різного масштабу: від невеликих магазинів до високонавантажених платформ з мільйонами операцій на день.

Гарантії та підтримка

Ми даємо гарантію на виконану роботу терміном на 12 місяців. Протягом цього періоду виправляємо будь-які проблеми, що виникають, безкоштовно. Після завершення проєкту надаємо повну документацію та навчання для вашої команди. Технічна підтримка доступна протягом 30 днів після запуску — ми допоможемо усунути будь-які питання та забезпечимо успішний запуск.

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

Останні роботи

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