Отображение геолокаций на Yandex maps в Drupal 8

Долго ждал когда появится годный Drupal 8 модуль для отображения точек на карте Yandex. Модуль появился, но не совсем годный для моих целей. Поэтому решил все же по-быстрому накидать свой минимум.

Мои задачи:

  • Сделать отображение метки на Яндекс карте для поля, содержащего геоданные. Это поле можно будет прикрутить как к материалу, так и к любой сущности, например, к параграфу.
  • Расположение метки на карте должно задаваться в редакторе содержимого простым перетаскиванием карты.
  • Отображение метки, поведения и наборы контролов Яндекс карты должны быть настраиваемыми.
  • Вот такой нехитрый набор хотелок получился в первом приближении. Вышеназванный модуль не подошел по ряду причин, в том числе и потому что он хранит точку не в координатах, как поле Geolocation, а в формате, который в случае чего придется парсить. Я же рассчитываю на то, чтобы в дальнейшем можно было группировкой по полю во вьюхе отобразить точки из нескольких материалов.
  • Новый тип поля я изобретать не стал, взял модуль Geolocation, который определяет необходимый мне тип.

Создание поля

Итак, после установки модулей создадим поле типа Geolocation и настроим отображение формы, в качестве виджета выберем Geolocation Yandex map:

Добавление поля Geolocation Yandex map в Drupal 8

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

На вкладке управления отображением также выбираем:

Настройка отображения поля Geolocation Yandex map в Drupal 8

Параметры форматирования

Настраиваем параметры форматирования:

Настройка параметров виджета поля Geolocation Yandex map в Drupal 8

Параметры карты можно довольно гибко настраивать. Так например в поле Balloon content можно использовать токены.

Заполнение поля

После этого в редактируемом материале можно редактировать поле типа Geolocation просто перемещаясь по карте.

Редактирование поля Geolocation Yandex map в форме создания/редактирования материала в Drupal 8

Результат

Ну и соответственно рендер поля будет выглядеть примерно так:

Вид карты из поля Geolocation Yandex map в Drupal 8


Ссылка на модуль: https://www.drupal.org/project/ymaps_geolocation

Атрибуция

Оригинал статьи: http://big-gu.ru/blog/modul-yandex-map-dlya-drupal-8

Автор

Комментарии

Аватар пользователя azzis azzis 30 ноября 2018 в 9:35

У меня есть аккаунт на д.орге, но модули там никогда не релизил и разбираться с этим пока некогда. Если подскажете что и как, могу, конечно, попытаться пройти этот квест )

Аватар пользователя azzis azzis 3 декабря 2018 в 16:39
2

Поправил косяк. Добавил на страницу настроек координаты центра карты для инициализации. В случае если координаты центра не заданы, автоматически берется центр Москвы. Спасибо вам за тестирование модуля и сообщение об ошибке!
Правки можно забрать в 8.x-1.x-dev ветке на Дорге или в гите https://github.com/azzzis/ymaps_geolocation.

Аватар пользователя webmasternew webmasternew 4 декабря 2018 в 0:34
azzis wrote:

Поправил косяк. Добавил на страницу настроек координаты центра карты для инициализации. В случае если координаты центра не заданы, автоматически берется центр Москвы. Спасибо вам за тестирование модуля и сообщение об ошибке!
Правки можно забрать в 8.x-1.x-dev ветке на Дорге или в гите https://github.com/azzzis/ymaps_geolocation.

Теперь нет настроек в управлении отображении форм.
Нету строки поиска, можно только таскать точку.

Аватар пользователя azzis azzis 4 декабря 2018 в 0:40

Так и задумано. Дело в том, что если пользоваться строкой поиска в результате поиска выводится синий маркер на карте. В итоге два маркера будут конфликтовать - не всем будет понятно почему так происходит . Поэтому я пока убрал поиск. Если есть мысли как сделать, чтобы маркер результатов поиска не отображался - пишите, все можно переделать. Я сам прекрасно понимаю, что поиск это удобно.

Аватар пользователя webmasternew webmasternew 4 декабря 2018 в 8:48

По моему красный маркер не совсем нужен... Проще воспользоватся поиском - вбить нужный адрес и на этом адресе появится синий маркер который можно будет перетащить и поставить в нужное место.

Аватар пользователя azzis azzis 4 декабря 2018 в 9:45
1

Ну это еще додуматься надо, что оно так работает, что нужно поиском вбить и тогда появится маркер... ну и плюс ко всему, синий маркер поиска нельзя таскать, Яша не даст - это же результат поиска. Я сделал по аналогии, как на сервисах объявлений. У меня выбор точки сделан по аналогии с Авито. Думаю потом можно будет строку поиска прикрутить и реализовать поиск немного по другому.