03.окт.2024

Компонент карты яндекс с множественными адресами и точками

Создаем свойство "ATTR_MAPS" с типом "Привязка к Яндекс картам", обязательно ставим множественное свойство




Далее Прописываем координаты у элемента:


В компонетне прописываем данный код:




if ($arResult["PROPERTIES"]["ATTR_MAPS"]["VALUE"]) {
 $cordiFilter = $arResult["PROPERTIES"]["ATTR_MAPS"]["VALUE"];

                 // Создаем массив для хранения координат
                 $arPos = [];

                 // Разбиваем каждую координату на широту и долготу
                 foreach ($cordiFilter as $coordination) {
                    $coordinates = explode(",", $coordination);
                    if (count($coordinates) == 2) { // Проверяем, что координаты содержат широту и долготу
                       $arPos[] = [
                          'LAT' => trim($coordinates[0]),
                          'LON' => trim($coordinates[1]),
                       ];
                    }
                 }

                 // Проверяем, что у нас есть хотя бы одна координата для вывода карты
                 if (!empty($arPos)) {
                    $mapData = [
                       'yandex_lat' => $arPos[0]['LAT'],
                       'yandex_lon' => $arPos[0]['LON'],
                       'yandex_scale' => 10,
                       'PLACEMARKS' => [],
                    ];

                    // Добавляем метки на карту для каждой координаты
                    foreach ($arPos as $key => $pos) {
                       $mapData['PLACEMARKS'][] = [
                          'LAT' => $pos['LAT'],
                          'LON' => $pos['LON'],
                          'TEXT' => $getArAddress[$key], // Установите здесь текст для метки, если необходимо
                       ];
                    }

                    // Выводим компонент яндекс карты
                    $APPLICATION->IncludeComponent(
                       "bitrix:map.yandex.view",
                       "yandex_map",
                       [
                          "INIT_MAP_TYPE" => "MAP",
                          "MAP_DATA" => serialize($mapData),
                          "MAP_WIDTH" => "100%",
                          "MAP_HEIGHT" => "500",
                          "CONTROLS" => ["ZOOM", "SCALELINE"],
                          "OPTIONS" => ["DISABLE_SCROLL_ZOOM", "ENABLE_DBLCLICK_ZOOM", "ENABLE_DRAGGING"],
                          "MAP_ID" => "",
                       ],
                       false
                    );
                 }
              }

← Назад к списку новостей