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

Просмотров: 10990 | Комментариев: 22

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

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

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

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

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


Подскажите пожалуйста, а как возможно вывести все элементы на карту из всех инфоблоков?
Михаил
Цитата
Константин пишет:
Подскажите пожалуйста, а как возможно вывести все элементы на карту из всех инфоблоков?
Воспользуйтесь готовым модулем из маркетплейс http://marketplace.1c-bitrix.ru/solutions/sologroupltd.generalmap/ это дешевле и быстрее нежели писать свой компонент
Подскажите как вывести фото в метки на яндекс карте?
Михаил
Цитата
Артур пишет:
Подскажите как вывести фото в метки на яндекс карт
Это нужно создавать свой компанент на основе этих карт или на основе компанента новостей
Цитата
выводим необходимый компонент в публичной части сайта и копируем шаблон компонента в шаблон своего сайта
какой компонент лучше всего использовать для этой задачи?
А как решается проблема с кешированием компонента?
Михаил
Цитата
Алена пишет:
А как решается проблема с кешированием компонента?
Вставте карту не в template.php а в component_epilog.php тогда кеширование будет работать
Добрый вечер,
Михаил подскажите пожалуйста как реализовать привязку "яндекс карты" к iblock.element.add.form в публичной части?
поле привязки к инфоблоку создал.

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

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

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

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

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

Спасибо за внимание
Только так думаю
https://camouf.ru/blog-note/2449/
предавать в форме координаты точки, придется плотно подумать
Михаил, добрый день!
Если создать в свойствах инфоблока привязку к карте, то в выводе, например,  компонента "Каталог" карта с точкой отображается без доп. настроек...
Т е повторно, указанный выше код вызывать не нужно или я что-то не понимаю....
А подскажите, как передать карте значение некоторых свойств ? Нужно, например, изменить zoom по умолчанию .  
Константин
Как таким же методом вывести карту Гугла?
Михаил
Цитата
Константин Нечаев написал:
Как таким же методом вывести карту Гугла?
Просто вызовите компонент Гугл карта из стандартных, правда не помню выпилили его или нет.
Константин
Цитата
Михаил Базаров пишет:
Цитата
Константин Нечаев написал:
Как таким же методом вывести карту Гугла?
Просто вызовите компонент Гугл карта из стандартных, правда не помню выпилили его или нет.
Нашел прямо вариант с кодом.
Сергей
Цитата
Михаил Базаров пишет:
Вставте карту не в template.php а в component_epilog.php тогда кеширование будет работать
а как это сделать??
Михаил
Цитата
Сергей Стефанович написал:
Цитата
Михаил Базаров  пишет:
Вставте карту не в template.php а в component_epilog.php тогда кеширование будет работать
а как это сделать??
Создать файл component_epilog.php рядом с template.php и вставить туда
Сергей
Цитата
Михаил Базаров пишет:
Создать файл component_epilog.php рядом с template.php и вставить туда
а как потом вывести это всё в нужном месте в template.php ??

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

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

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

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

Кроме создания сайтов, я так же веду блог с заметками о вебразработке, записываю бесплатные видеоуроки и содержу форум, на котором можно задавать вопросы и просто общаться. Заметки, преимущественно - это короткие или подробные рецепты, по реализации часто требуемого функционала- в рамках разработки сайтов на 1С-Битрикс

Показать еще