Телеграм: @camouf_ru Почта: mihail@bazarow.ru

Вывести свойство привязка к Яндекс Картам в Битрикс

Просмотров: 17475

Часто бывает нужно вывести свойство привязка к Яндекс карте в детальном описании элемента. Например в детальной новости или в детальном элементе каталога. Достаточно часто это нужно при разработке сайта недвижимости или фирменного сайта, для вывода объектов или филиалов, сети офисов и так далее.

У этой заметки есть продолжение: Свойство: привязка к Яндекс:Картам - вывести из нескольких элементов на одну карту

Часто бывает нужно вывести свойство "привязка к Яндекс карте" в детальном описании элемента. Например, в детальной новости или в детальном элементе каталога. Достаточно часто это нужно при разработке сайта недвижимости или фирменного сайта, для вывода объектов или филиалов, сети офисов и так далее.

Для начала в настройках инфоблока создаем новое свойство типа "Привязка к Яндекс картам", затем выводим необходимый компонент в публичной части сайта и копируем шаблон компонента в шаблон своего сайта

Затем добавляем в template.php шаблона компонента вот такой код

<? $arProperty = $arResult["DISPLAY_PROPERTIES"]; ?> 
 <? if (isset($arProperty['YAMAP'])):?> 
 <? $arPos = explode(",", $arProperty['YAMAP']['VALUE']);?> 
 <div class="yandexmapa"> 
 	<?$APPLICATION->IncludeComponent( 
 		"bitrix:map.yandex.view", 
 		"", 
 		Array( 
 			"INIT_MAP_TYPE" => "MAP", 
 			"MAP_DATA" => serialize(array( 
 			'yandex_lat' => $arPos[0], 
 			'yandex_lon' => $arPos[1], 
 			'yandex_scale' => 13, 
 			'PLACEMARKS' => array ( 
 				array( 
 					'TEXT' => $arProperty["YAMAP"]["VALUE"].", ".$arProperty["YAMAP"]["VALUE"], 
 					'LON' => $arPos[1], 
 					'LAT' => $arPos[0], 
 					), 
 				), 
 			)), 
 			"MAP_WIDTH" => "100%", 
 			"MAP_HEIGHT" => "300", 
 			"CONTROLS" => array("ZOOM", "MINIMAP", "TYPECONTROL", "SCALELINE"), 
 			"OPTIONS" => array("DESABLE_SCROLL_ZOOM", "ENABLE_DBLCLICK_ZOOM", "ENABLE_DRAGGING"), 
 			"MAP_ID" => "" 
 	), 
 	false 
 	);?> 
 </div> 
 <?endif;?>

В атрибуте YAMAP хранится наша связь. Также можно создать свойство адрес (город / улица / дом) - типа строка, карта может получать местоположение с помощью поиска по карте Яндекс и использовать типовой компонент "Яндекс карта: поиск по карте"

В итоге получится примерно так же как я вывел это на одном разрабатываемом сайте по недвижимости Москвы

Николай Толстых 16.04.2019
Михаил, спасибо за статью. Подскажите, а как быть со списком новостей (news.list)? В итоге подключаются сразу множество компонентов bitrix:map.yandex.view. Может как то отдельно свойство
Код
<?=$arItem['DISPLAY_PROPERTIES']['YAMAP']['VALUE']?>
выводить? Но так выползают только координаты.
Михаил Базаров 15.11.2018
Цитата
Тимур Парфенцев написал:
Код
 'TEXT' => $arProperty["YAMAP"]["VALUE"].", ".$arProperty["YAMAP"]["VALUE"], 
  
А зачем здесь дважды в бабл передавать координату. Попробовал заменить на

Код
 "TEXT"=>$arItem["NAME"].",<br> ".$arItem["PREVIEW_TEXT"]
  
Отлично работает. (В списке новостей). Спасибо за решение.
Да, видимо продублировал когда копировал
Тимур Парфенцев 14.11.2018
Код
'TEXT' => $arProperty["YAMAP"]["VALUE"].", ".$arProperty["YAMAP"]["VALUE"], 
 
А зачем здесь дважды в бабл передавать координату. Попробовал заменить на

Код
"TEXT"=>$arItem["NAME"].",<br> ".$arItem["PREVIEW_TEXT"]
 
Отлично работает. (В списке новостей). Спасибо за решение.
Сергей Стефанович 21.04.2018
Цитата
Михаил Базаров пишет:
Зачем нужен и как используется описано вот здесь. Вроде как и добавить нечего    
https://dev.1c-bitrix.ru/learning/course/?COURSE_ID=43&LESSON_ID=2975
Михаил, читал эту статью несколько раз уже, и блог читал)
но все равно не понял как решить данную задачу, что, куда и как вставлять  :)
Михаил Базаров 20.04.2018
Цитата
Сергей Стефанович пишет:
Цитата
Михаил Базаров пишет:
Создать файл component_epilog.php рядом с template.php и вставить туда
а как потом вывести это всё в нужном месте в template.php ??

Михаил, не плохо было бы увидеть статью по component_epilog.php. С разъяснением зачем он и как работает.
Зачем нужен и как используется описано вот здесь. Вроде как и добавить нечего  :)  
https://dev.1c-bitrix.ru/learning/course/?COURSE_ID=43&LESSON_ID=2975
Сергей Стефанович 20.04.2018
Цитата
Михаил Базаров пишет:
Создать файл component_epilog.php рядом с template.php и вставить туда
а как потом вывести это всё в нужном месте в template.php ??

Михаил, не плохо было бы увидеть статью по component_epilog.php. С разъяснением зачем он и как работает.
Михаил Базаров 19.04.2018
Цитата
Сергей Стефанович написал:
Цитата
Михаил Базаров  пишет:
Вставте карту не в template.php а в component_epilog.php тогда кеширование будет работать
а как это сделать??
Создать файл component_epilog.php рядом с template.php и вставить туда
Сергей Стефанович 18.04.2018
Цитата
Михаил Базаров пишет:
Вставте карту не в template.php а в component_epilog.php тогда кеширование будет работать
а как это сделать??
Константин Нечаев 10.02.2017
Цитата
Михаил Базаров пишет:
Цитата
Константин Нечаев написал:
Как таким же методом вывести карту Гугла?
Просто вызовите компонент Гугл карта из стандартных, правда не помню выпилили его или нет.
Нашел прямо вариант с кодом.
Михаил Базаров 10.02.2017
Цитата
Константин Нечаев написал:
Как таким же методом вывести карту Гугла?
Просто вызовите компонент Гугл карта из стандартных, правда не помню выпилили его или нет.
Константин Нечаев 10.02.2017
Как таким же методом вывести карту Гугла?
Андрей Шведюк 03.11.2016
Михаил, добрый день!
Если создать в свойствах инфоблока привязку к карте, то в выводе, например,  компонента "Каталог" карта с точкой отображается без доп. настроек...
Т е повторно, указанный выше код вызывать не нужно или я что-то не понимаю....
А подскажите, как передать карте значение некоторых свойств ? Нужно, например, изменить zoom по умолчанию .  
Михаил Базаров 01.11.2016
Цитата
Артур написал:
Михаил Базаров ,
Добрый вечер,
Михаил подскажите пожалуйста как реализовать привязку "яндекс карты" к iblock.element.add.form в публичной части?
свойство "привязки к яндекс карте" в инфоблоке создал.

задача такая:
добавлять точку на карте из публичной части не заходя в админ панель.

Спасибо за внимание
Только так думаю
https://camouf.ru/blog-note/2449/
предавать в форме координаты точки, придется плотно подумать
Артур 31.10.2016
Михаил Базаров,
Добрый вечер,
Михаил подскажите пожалуйста как реализовать привязку "яндекс карты" к iblock.element.add.form в публичной части?
свойство "привязки к яндекс карте" в инфоблоке создал.

задача такая:
добавлять точку на карте из публичной части не заходя в админ панель.

Спасибо за внимание
Артур 31.10.2016
Добрый вечер,
Михаил подскажите пожалуйста как реализовать привязку "яндекс карты" к iblock.element.add.form в публичной части?
поле привязки к инфоблоку создал.

задача такая:
добавлять точку на карте из публичной части не заходя в админ панель.

Спасибо за внимание
Михаил Базаров 27.07.2015
Цитата
Алена пишет:
А как решается проблема с кешированием компонента?
Вставте карту не в template.php а в component_epilog.php тогда кеширование будет работать
Алена 27.07.2015
А как решается проблема с кешированием компонента?
Евгений 25.06.2015
Цитата
выводим необходимый компонент в публичной части сайта и копируем шаблон компонента в шаблон своего сайта
какой компонент лучше всего использовать для этой задачи?
Михаил Базаров 18.05.2015
Цитата
Артур пишет:
Подскажите как вывести фото в метки на яндекс карт
Это нужно создавать свой компанент на основе этих карт или на основе компанента новостей
Артур 18.05.2015
Подскажите как вывести фото в метки на яндекс карте?

Работы из портфолио

В портфолио не публикуются работы, доля моего участия в которых менее 80%.
Часто обращаются за доработками уже существующих проектов или реализацией не стандратного функционала на готовых сайтах.