Долго ждал когда появится годный Drupal 8 модуль для отображения точек на карте Yandex. Модуль появился, но не совсем годный для моих целей. Поэтому решил все же по-быстрому накидать свой минимум.
Мои задачи:
- Сделать отображение метки на Яндекс карте для поля, содержащего геоданные. Это поле можно будет прикрутить как к материалу, так и к любой сущности, например, к параграфу.
- Расположение метки на карте должно задаваться в редакторе содержимого простым перетаскиванием карты.
- Отображение метки, поведения и наборы контролов Яндекс карты должны быть настраиваемыми.
- Вот такой нехитрый набор хотелок получился в первом приближении. Вышеназванный модуль не подошел по ряду причин, в том числе и потому что он хранит точку не в координатах, как поле Geolocation, а в формате, который в случае чего придется парсить. Я же рассчитываю на то, чтобы в дальнейшем можно было группировкой по полю во вьюхе отобразить точки из нескольких материалов.
Новый тип поля я изобретать не стал, взял модуль Geolocation, который определяет необходимый мне тип.
Итак, после установки модулей создадим поле типа Geolocation и настроим отображение формы, в качестве виджета выберем Geolocation Yandex map:
На вкладке управления отображением так же выбираем:
и настраиваем параметры форматирования:
Параметры карты можно довольно гибко настраивать. Так например в поле Balloon content можно использовать токены.
После этого в редактируемом материале можно редактировать поле типа Geolocation просто перемещаясь по карте.
Ну и соответсвенно рендер поля будет выглядеть примерно так:
Для удобства выложил модуль на гитхабе: https://github.com/azzzis/ymaps_geolocation