С каждым днём интернет облегчает нам жизнь практически во всех сферах. Так, уже чтобы пообщаться со своими родственниками и друзьями которые живут или отдыхают за границей не нужно платить большие деньги за роуминг, а можно связаться через интернет. Но сервисы интернет затронули не только средства связи. Одной из очень полезных «фишек» являются данные геолокации или, другими словами карты.
Поиск нужного адреса на картах стал намного проще, чем тогда, когда вы только знали название улицы и номер дома. На сегодняшний день благодаря картографам и спутникам мы знаем практически всю поверхность земли и можем отобразить ее в виде чертежа.
При создании сайтов так же удобно добавить страничку на которой находится карта с вашим адресом, и в этом нам помогают такие сервисы как Yandex и Google. Однако, когда нам нужна активная карта и у каждого материала есть свои координаты задача немного затрудняется.
Но не надо сразу впадать в раж и создавать новую карту для каждого материала, а потом группировать все точки и помещать их на общую карту, для этого на Drupal есть отличный модуль.
Описание и установка модуля
Для удобной работы нам понадобится 2 модуля которые работают в связке друг с другом.
Первый это Geofield Yandex maps — это основной модуль, который необходим для ввода , а также вывода информации о местоположении при помощи Яндекс карт.
Второй это Geofield — который представляет собой набор инструментов для вывода этих карт на дисплей.
Устанавливаем модули, как это делать мы рассказывали в одной из наших статей, и активируем все модули с раздела Yandex map,
И все модули в разделе Geofield
Настройки модуля
Настройка Яндекс карт
Первая настройка отвечает за количество блоков с яндекс картами.
Своё значение нам вписать не дают, а дают на выбор от 1 до 20, чего вполне достаточно.
После выбора значения на странице /admin/structure/block будут доступны блоки карт.
Затем идёт блок настроек отображения
Первая настройка в нём - это стиль вывода карты и на выбор есть «Карта» и «Карта открывается нажатием кнопки»
Если выбрать первый то карта будет доступна сразу, а если выбрать второй вариант то откроются ещё 2 настройки где можно выбрать название для ссылок открытия и закрытия карты.
Затем идут 2 настройки ширины и высоты блока на странице настройки, а именно административной. То есть на страницах вывода размеры карты, по умолчанию будут другие.
На этом настройки яндекс карт закончены и перейдём в настройки geofield
Настройки Geofield
На этой странице мы можем выбрать адрес пресета (маркера) об этом мы поговорим чуть позже, и два чекбокса с включением предзагрузчика, которые рекомендуется использовать в случае вставки на сайт карт при помощи html, а также включения режима отладки, который не желательно использовать на рабочих проектах.
Добавление карт к типу материала
Теперь пришло время добавить карту к материалу, для этого перейдём на страницу управления полями типа материала.
И создадим новое поле. Название и машинное имя ставите на своё усмотрение, в «Тип поля» выбираем Geofield, а в виджете Яндекс карта.
Настройки делаете на своё усмотрение с учётом особенностей проекта
Следующим не маловажным пунктом являет настройка отображения поля. В нём нам надо выбрать «Яндекс карты» ну а дополнительные настройки подбираем под себя.
Теперь добавим материл в котором есть поле с картами.
На форме добавления находим наше поле и ставим на карте необходимый нам элемент. Это может быть точка, область или линия.
Теперь перейдя на страницу нашего материала у нас будет выводится карта с отметкой которую мы выставили до этого.
Представление с картой
Теперь выведем все наши материалы на одну карту
Для этого мы воспользуемся представлением. По этому перейдём в раздел /admin/structure/views и нажмём на ссылку «добавить новое представление»
Заполняем поля с его названием и машинным именем на своё усмотрение. В графе «Показать» выбираем «Содержимое», а в графе «Тип» выбираем материал в котором мы добавили поле с картой. Оставляем/ставим галочку на «Создать страницу» и прописываем удобный для себя путь, по которому будет доступно это представление, а в формате выставляем “Яндекс Карта” состоящая из полей
И нажимаем «Продолжить редактирование»
Первым делом перейдём к настройкам отображения, для этого в разделе Формат нажмём на ссылку «Настройки»
Настройки каждый подстраивает на своё усмотрения, я же в своём случае поставлю галочки на Автомаштобирование и Автоцентрирование карты
а в дополнительных настройках поставлю путь к своему пресету (как это делается преведенно в примере снизу)
Теперь добавим наше поле, для этого в графе «Поля» нажмём на ссылку «добавить»
В списке находим своё поле, у него обязательно должна быть приставка (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» на своё, а также прописываем путь к иконке которую мы хотим видеть вместо стандартного пресета.
Теперь необходимо сообщить модулю откуда ему брать информацию о пресетах, для этого заходим на страницу настроек модуля:
И в поле «Путь к пресетам» прописываем путь к скопированному файлу
Осталось только прописать имя пресета для карт
Для этого нам надо перейти на страницу управления отображением и в настройках карты в графе «Имя пресета» прописать своё имя
Все, теперь карты на страницах будут выводиться с кастомными значками.
Также, при выводе карт представлениями мы можем указать в настройках поля карты имя пресета и вывести таким образом кастомный значок и в них.