Блог Vaden Pro

Все о самостоятельном создании и продвижении сайтов

Вывод карт при помощи модулей Geofield Yandex Maps в связке с geofield

Раздел: 

Вывод яндекс карт на сайте при помощи модуля Geofield yandex maps

С каждым днём интернет облегчает нам жизнь практически во всех сферах. Так, уже чтобы пообщаться со своими родственниками и друзьями которые живут или отдыхают за границей не нужно платить большие деньги за роуминг, а можно связаться через интернет. Но сервисы интернет затронули не только средства связи. Одной из очень полезных «фишек» являются данные геолокации или, другими словами карты.

Поиск нужного адреса на картах стал намного проще, чем тогда, когда вы только знали название улицы и номер дома. На сегодняшний день благодаря картографам и спутникам мы знаем практически всю поверхность земли и можем отобразить ее в виде чертежа.

При создании сайтов так же удобно добавить страничку на которой находится карта с вашим адресом, и в этом нам помогают такие сервисы как Yandex и Google. Однако, когда нам нужна активная карта и у каждого материала есть свои координаты задача немного затрудняется.

Но не надо сразу впадать в раж и создавать новую карту для каждого материала, а потом группировать все точки и помещать их на общую карту, для этого на Drupal есть отличный модуль.

Описание и установка модуля

Для удобной работы нам понадобится 2 модуля которые работают в связке друг с другом.

Первый это Geofield Yandex maps — это основной модуль, который необходим для ввода , а также вывода информации о местоположении при помощи Яндекс карт.

Второй это Geofield — который представляет собой набор инструментов для вывода этих карт на дисплей.

Устанавливаем модули, как это делать мы рассказывали в одной из наших статей, и активируем все модули с раздела Yandex map,

Модули из раздела geofield yandex maps

И все модули в разделе Geofield

Включение модулей Geofield

Настройки модуля

Настройка Яндекс карт

Настройки яндекс карт

Первая настройка отвечает за количество блоков с яндекс картами.

Блоки с Яндекс картами

Своё значение нам вписать не дают, а дают на выбор от 1 до 20, чего вполне достаточно.

После выбора значения на странице /admin/structure/block будут доступны блоки карт.

Затем идёт блок настроек отображения

Первая настройка в нём - это стиль вывода карты и на выбор есть «Карта» и «Карта открывается нажатием кнопки»

Стиль карты

Если выбрать первый то карта будет доступна сразу, а если выбрать второй вариант то откроются ещё 2 настройки где можно выбрать название для ссылок открытия и закрытия карты.

Затем идут 2 настройки ширины и высоты блока на странице настройки, а именно административной. То есть на страницах вывода размеры карты, по умолчанию будут другие.

Настройка высоты и ширины карты

На этом настройки яндекс карт закончены и перейдём в настройки geofield

Настройки Geofield

На этой странице мы можем выбрать адрес пресета (маркера) об этом мы поговорим чуть позже, и два чекбокса с включением предзагрузчика, которые рекомендуется использовать в случае вставки на сайт карт при помощи html, а также включения режима отладки, который не желательно использовать на рабочих проектах.

Настройка Geofield

Добавление карт к типу материала

Теперь пришло время добавить карту к материалу, для этого перейдём на страницу управления полями типа материала.

Управление полями материалла

И создадим новое поле. Название и машинное имя ставите на своё усмотрение, в «Тип поля» выбираем Geofield, а в виджете Яндекс карта.

Поле с картами

Настройки делаете на своё усмотрение с учётом особенностей проекта

Настройки поля

Следующим не маловажным пунктом являет настройка отображения поля. В нём нам надо выбрать «Яндекс карты» ну а дополнительные настройки подбираем под себя.

Настройки отображения поля карт

Теперь добавим материл в котором есть поле с картами.

Добавление материала

На форме добавления находим наше поле и ставим на карте необходимый нам элемент. Это может быть точка, область или линия.

Добавление карты

Теперь перейдя на страницу нашего материала у нас будет выводится карта с отметкой которую мы выставили до этого.

Карта на странице материала

Представление с картой

Теперь выведем все наши материалы на одну карту

Для этого мы воспользуемся представлением. По этому перейдём в раздел /admin/structure/views и нажмём на ссылку «добавить новое представление»

Новое представление

Заполняем поля с его названием и машинным именем на своё усмотрение. В графе «Показать» выбираем «Содержимое», а в графе «Тип» выбираем материал в котором мы добавили поле с картой. Оставляем/ставим галочку на «Создать страницу» и прописываем удобный для себя путь, по которому будет доступно это представление, а в формате выставляем “Яндекс Карта” состоящая из полей

Настройка представления

И нажимаем «Продолжить редактирование»

Первым делом перейдём к настройкам отображения, для этого в разделе Формат нажмём на ссылку «Настройки»

Ссылка настройки в представлении

Настройки каждый подстраивает на своё усмотрения, я же в своём случае поставлю галочки на Автомаштобирование и Автоцентрирование карты

Настройка отображения с картами

а в дополнительных настройках поставлю путь к своему пресету (как это делается преведенно в примере снизу)

Дополнительные настройки

Теперь добавим наше поле, для этого в графе «Поля» нажмём на ссылку «добавить»

Добавление полей

В списке находим своё поле, у него обязательно должна быть приставка (GeoObject)

Поле с приставкой GeoObject

И нажимаем применить.

Остальные поля добавляем и настраиваем по надобности и сохраняем отображение.

Все поля, которые будут добавлены дополнительно, будут выводиться при клике на объект.

Теперь перейдя на страницу представления на ней мы увидим карту c нашими объектами

Для наглядности создадим еще несколько типов материала, и отметим на их адреса. Посмотрим как теперь выводится наша карта.

Карта представлением

Как мы видим, новые элементы добавились на карту, а сама карта автоматически подобрала масштаб что бы они все были на ней видны.

Карта в тексте

Также можно вставить карту в текст - для этого переходим в раздел admin/config/content/formats

Формат текста

Выбираем формат которым вы пользуетесь при добавлении содержимого с текстом и нажимаете рядом с ним ссылку «Настроить»

Настройки формата текста

В фильтрах ставим галочку рядом с «Яндекс Карты»

Яндекс карта в тексте

И воспользовавшись подсказкой переходим на страницу настройки модуля и ставим галочку рядом «Использовать предзагрузчик»

Включение предзагрузчика

На странице настройки формата выставляем порядок фильтров так, что бы карты были первыми

Порядок фильтра

В параметрах фильтра выставляем настройки под себя

Настройка фильтра

И сохраняем настройки

Что бы вставить карту в текст необходимо воспользоваться тэгом [map][/map]

Пример кода карты: [map]{"type":"Point","coordinates":[25.33,22.77]}[/map]

Или же воспользоватся кодом

Подключение своих маркеров(пресетов)

Не всегда стандартные значки подходят под фирменный стиль сайта.

По этой причине в этом модуле предусмотрена замена их на свои.

Для этого нам сначала нужно скопировать фал geofield_ymap_presets.example.js из директивы /sites/all/modules/geofield_ymap/js в свою тему.

В файле, по желанию, заменяем название «custom#examplePreset1» на своё, а также прописываем путь к иконке которую мы хотим видеть вместо стандартного пресета.

Задаём путь к пресету

Теперь необходимо сообщить модулю откуда ему брать информацию о пресетах, для этого заходим на страницу настроек модуля:

Настройка модуля

И в поле «Путь к пресетам» прописываем путь к скопированному файлу

Путь к пресету

Осталось только прописать имя пресета для карт

Для этого нам надо перейти на страницу управления отображением и в настройках карты в графе «Имя пресета» прописать своё имя

Имя пресета

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

Свой значок на карте

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