Перейти к содержимому


Фотография
* * * - - 1 Голосов

Яндекс карта для каталога недвижимости

рецепт яндекс карта yandex map map

В этой теме нет ответов

#1 Cheren-dow

Cheren-dow

Отправлено 17 September 2013 - 11:21

*
Популярное сообщение!

Буквально вчера нужно было найти решение по выводу яндекс карты в карточке объекта. Сделал я это не создавая нового элемента, но при необходимости сделать его не составит труда, достаточно все просто. 

 

 

 

1. Создать позицию где будет выводится сама карта (делал для full - a)

Открываем файл position.xml. Он располагается по адресу

сайт\media\zoo\applications\jbuniversal\templates\catalog\renderer\item\тип элемента\positions.xml

и добавляем новую позицию для full - a

<position name="map">Карта</position>

Теперь в full - е появилась новая позиция Карта

ssm7ce2926a_200x0.png

 

2. Для нашего типа необходима добавить новый элемент это текстовое поле

Нажимаем редактировать поля у нашего типа (в моем случае это Product) и добавляем элемент Текст

ssm5cf7f736_200x0.png

 

3. Добавляем только что созданный элемент в позицию Карта для Full

ssm699f5404_200x0.png

Внимание: В созданной позиции Карта(map) не должны находиться  другие элементы, кроме одного, в котором указан адрес объекта.Он должен быть только один.

 

4. Добавим нашему Item - у значение для элемента карта

Что бы API яндекса правильно искал точку на карте нужно придерживаться маленькому правилу писать сначало Город, Улица, Дом.

Переходим в элементы и добавляем в уже существующий или создаем новый item. Например:

ssm6fed3472_200x0.png

 

Проверяем, но ничего не выводиться потому что не сделали вывод данной позиции в шаблоне FULL

 

5. Добавляем позицию map в шаблон  full

В нужном месте вставляем следующий код:

<?php if ($this->checkPosition('map')) : ?>
	<div id="map"><?php echo $this->renderPosition('map' , array('style' => 'jbmap')); ?></div>
<?php endif; ?>

Т.к указали шаблон вывода элемента ('style' => 'jbmap') нужно его создать 

 

6. Создаем шаблон вывода элемента jbmap

Переходим в папку 

сайт\media\zoo\applications\jbuniversal\templates\catalog\renderer\element

и создаем файл jbmap.php (создаем исключительно что бы в основном шаблоне была чистота без YandexMap API)

 

в этот файл вставляем следующие строки:

<?php
// no direct access
defined('_JEXEC') or die('Restricted access');

// Вывод блока с картой. Указываем нужную высоту и ширину блока
echo '<div id="ymaps-map-id_134250506289918332175" style="width: 450px; height: 350px;"></div>';
?>
<script type="text/javascript">
function fid_134250506289918332175(ymaps) {

	ymaps.geocode('<?php echo $element->render($params); ?>', { results: 1 }).then(function (res){
		// Выбираем первый результат геокодирования
		var firstGeoObject = res.geoObjects.get(0);
		var map = new ymaps.Map("ymaps-map-id_134250506289918332175",{
			center: firstGeoObject.geometry.getCoordinates(),
			zoom: 16,
			type: "yandex#map"
		});
		
		map.controls
		.add("zoomControl")
		.add("mapTools")
		.add(new ymaps.control.TypeSelector(["yandex#map", "yandex#satellite", "yandex#hybrid", "yandex#publicMap"]));
		ymaps.geocode('<?php echo $element->render($params); ?>', { results: 1 }).then(function (res){
		// Выбираем первый результат геокодирования
			var firstGeoObject = res.geoObjects.get(0);
			map.geoObjects
			.add(new ymaps.Placemark(firstGeoObject.geometry.getCoordinates(), {balloonContent: "<?php echo $element->render($params); ?>"}, {preset: "twirl#lightblueDotIcon"}));
		});
	});
};
</script>
<script type="text/javascript" src="http://api-maps.yandex.ru/2.0/?coordorder=longlat&load=package.full&wizard=constructor&lang=ru-RU&onload=fid_134250506289918332175"></script>

и сохраняем. Описывать что внутри я не буду, кому интересно вся информация тут.

 

Теперь зайдем в наш item и мы увидим 

ssm6d7cbfe3_200x0.jpg


Сообщение отредактировал SmetDenis: 20 September 2013 - 21:21

  • 8
Posted Image
 





Темы с аналогичным тегами рецепт, яндекс карта, yandex map, map

Click to return to top of page in style!