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

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

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

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

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

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

Затем добавляем в 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 хранится наша связь. Также можно создать свойство адрес (город / улица / дом) - типа строка, карта может получать местоположение с помощью поиска по карте Яндекс и использовать типовой компонент "Яндекс карта: поиск по карте"

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

Михаил Базаров 10.02.2017
Цитата
Константин Нечаев написал:
Как таким же методом вывести карту Гугла?
Просто вызовите компонент Гугл карта из стандартных, правда не помню выпилили его или нет.
Константин Нечаев 10.02.2017
Цитата
Михаил Базаров пишет:
Цитата
Константин Нечаев написал:
Как таким же методом вывести карту Гугла?
Просто вызовите компонент Гугл карта из стандартных, правда не помню выпилили его или нет.
Нашел прямо вариант с кодом.
Сергей Стефанович 18.04.2018
Цитата
Михаил Базаров пишет:
Вставте карту не в template.php а в component_epilog.php тогда кеширование будет работать
а как это сделать??
Михаил Базаров 19.04.2018
Цитата
Сергей Стефанович написал:
Цитата
Михаил Базаров  пишет:
Вставте карту не в template.php а в component_epilog.php тогда кеширование будет работать
а как это сделать??
Создать файл component_epilog.php рядом с template.php и вставить туда
Сергей Стефанович 20.04.2018
Цитата
Михаил Базаров пишет:
Создать файл component_epilog.php рядом с template.php и вставить туда
а как потом вывести это всё в нужном месте в template.php ??

Михаил, не плохо было бы увидеть статью по component_epilog.php. С разъяснением зачем он и как работает.
Михаил Базаров 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
Сергей Стефанович 21.04.2018
Цитата
Михаил Базаров пишет:
Зачем нужен и как используется описано вот здесь. Вроде как и добавить нечего    
https://dev.1c-bitrix.ru/learning/course/?COURSE_ID=43&LESSON_ID=2975
Михаил, читал эту статью несколько раз уже, и блог читал)
но все равно не понял как решить данную задачу, что, куда и как вставлять  :)
Тимур Парфенцев 14.11.2018
Код
'TEXT' => $arProperty["YAMAP"]["VALUE"].", ".$arProperty["YAMAP"]["VALUE"], 
 
А зачем здесь дважды в бабл передавать координату. Попробовал заменить на

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

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