Как передать карту Яндекс в PDF ? [РЕШЕНО]

Добрый день, уважаемые гуру.

Исходные данные такие:
1. EVO v.1.4.0
2. На сайте есть личный кабинет веб-пользователей.
3. На сайте есть карта Yandex Map Custom TV от Pathologic . Эта карта используется и в штатном варианте (в админке сайта и на странице объета недвижимости), и так же выведена в личный кабинет веб-пользователя для добавления/редактирования объявления (объекта недвижимости).
4. На этих же страницах где и карта (шаблон объект недвижимости) есть преобразование в pdf — Сниппет makePDF от webber

Проблема в том, что не получается передать эту карту в pdf.

Вызов makePDF осуществляется на самой странице, прописан в шаблоне объекта недвижимости

[[makePDF? &html=`{{test}}` &flag=`F` &custom_path=`assets/files/` &filename=`mPDF_[*id*].pdf`]]

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

Решение вижу в создании скриншота уже загрузившейся карты (в админке, или в личном забинете) и загрузка этого скриншота в TV-параметр при сохранении страницы. Тогда в чанк test можно будет выводить не саму карту, а ее скриншот, что очень понравится и makePDF, и всем остальным тоже, т.к. файл pdf будет с картой.

Подскажите, как такое можно реализовать? А может у кого уже есть подобные плагины.
А может есть какие другие способы передать карту в pdf.

Спасибо.

7 комментариев

avatar
посмотрите в сторону phantomJS, похожую задачу делал на проекте
avatar
спасибо, смотрю, много в нем всякого-разного… а можно немножко подробней?
avatar
Попробуйте генерировать карту в виде статической картинки
tech.yandex.ru/maps/doc/staticapi/1.x/dg/concepts/input_params-docpage/
avatar
Это замечательно работает, но это 1.x.

А есть ли такое для 2.1? Не могу найти((

Проблема в том что координаты ШД у них прописываются в обратной очередности. И если прописать так

<img class="image" src="https://static-maps.yandex.ru/1.x/?ll=[*coords*]&size=450,450&z=10&l=map&pt=[*coords*]">

где [*coords*] — это ТВ параметр с координатами от Yandex Map Custom TV.

То makePDF отлично сработает и в файле pdf будет карта, вот только эта карта будет совсем в другом конце света.
avatar
Вот если бы долготу и широту поменять местами. В документации API Яндекс-карт есть параметр coordorder и можно задать latlong или longlat, но для Static API свои параметры и такого нет.

Если только сниппетом значения из TV coords поменять местами. Ну или Map Custom TV и все остальное с ним связанное переделать.
avatar
а в чем проблема написать сниппет что бы менял местами координаты? Две строки кода
avatar
я все же больше склоняюсь к мысли, что лучше будет применить параметр coordorder=longlat, дописать в файл scripts.json yamp для админки
и
<code><script src="//api-maps.yandex.ru/2.1/?lang=ru_RU&coordorder=longlat"></script></code>
для фронта.
В ТВ coords Значение по умолчанию координаты центра карты переставить местами (и в личном кабинете веб-пользователей).

Ну в общем и все.
Сайт еще в разработке, реальных страниц с объектами недвижимости нет, только тестовые, и они все-равно будут удаляться, а вновь добавляемые уже будут отображаться правильно.

А вот если бы сайт был рабочий с кучей реальных объектов — тогда да, только через сниппет.

Спасибо еще раз за хорошую идею и лишний повод почитать мануал по картам.
Комментарий отредактирован 2018-11-06 20:19:41 пользователем paic
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.