Захват большой Яндекс.Карты для печати

(Это обучающая статья. Если вы хотите заказать карту, вам сюда: plunix.ru/yandeks-ili-gugl-karta...)

В предыдущей заметке я рассказал, как захватить большое изображение (карту) по частям при помощи скриншотов и Фотошопа. Однако если есть средства для управления картой (API), то можно лёгким движением получить карту любого размера:

Такая карта получится в итогеТакая карта получится в итоге

Зачем вообще такая большая карта? Неужели нельзя проматывать её на экране, или купить карту нужной области, повесить на стенку и втыкать в неё флажки?

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

Или вот ещё идея: распечатать карту с крестиками, а в них воткнуть настоящие флажки. Если объектов сотня, экономится немало времени.

Захват карты в 2 шага

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

Шаг 1. Отображаем большую карту в браузере

Открыть пример в отдельном окне

Сохраняем страницу в виде html-файла у себя на компьютере (Файл/Сохранить), затем правим блокнотом нужные параметры и запускаем этот html-файл.

Код для вставки Яндекс.КартыКод для вставки Яндекс.Карты

Код вставки меняется от версии к версии, но в нём без проблем находятся нужные цифры, которые нужно заменить. В примере выше заданы такие параметры:
— размер 12000×9000 (это примерно 100×75 см),
— центр в точке [37,55] и масштаб (zoom: 13).

У Яндекса есть удобный инструмент, которым можно определить нужные цифры: координаты центра карты и её масштаб. Задавая различные координаты центра, можно двигать карту, чтобы нужная часть попала на лист. А масштаб влияет на детализацию карты (при увеличении zoom-а появляются названия улиц, станции метро и т.д.)

Когда заданы масштаб и центр карты, сначала пробуем отобразить небольшую карту (например, 1000×700 точек), а потом увеличиваем её охват до тех пор, пока не влезут все нужные объекты. Мне пришлось увеличить параметры width и height до 12000px и 9000px (и это ещё не предел!), чтобы охватить все метки на карте. Кстати, у Гугл.карты есть ограничение: 6000×6000.

Стандартное качество цветной печати — 300 dpi (как на фотографиях). Это означает, что 300 пикселей на экране равны 1 дюйму на бумаге (или 2,5 см). Значит, наши 12000 пикселей — это 12000 : 300 × 2,5 = 100 см.

Шаг 2. Сохраняем страницу с картой как картинку

Я использую Фаерфокс и плагины: FireShot (предпочтительнее) или Awesome Screenshot.

Когда большая карта загрузится (это можно отследить по анимированному значку на вкладке), сохраняем страницу как картинку:

FireShotFireShot
Awesome ScreenshotAwesome Screenshot

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

Карты (кроме спутниковых) лучше сохранять в формате PNG или TIF с компрессией: они хорошо жмутся.

Заметка была полезной? Поделитесь в соцсетях:

13 комментария
Андрей
Очень крутая и полезная инфа, Надеюсь у меня когда нибудь получится распечатать карту в хорошем разрешение, а сейчас, у меня не получается правильно написать код карты для вставки на сайт.((
Ваня
Спасибо! Добавил в заметку работающий пример.
Иван
Спасибо огромное за информацию!! Еще для большего счастья хотелось бы узнать что на что изменить чтобы был вид со спутника???
Ваня
Тип карты задаётся в начале скрипта вместе с центром и зумом: center: [55.481209,38.404923],
zoom: 13, type: "yandex#map"
Всего 4 типа карты: "yandex#map", "yandex#satellite", "yandex#hybrid", "yandex#publicMap". Вид со спутника: yandex#satellite.
Alex
Приветствую Ваня. Скрипт перестал работать.
То есть по координатам отрабатывает, но с зумом и масштабом проблемы. Сможете подкорректировать ?
Ваня
Если вы о том, что в примере нельзя мышкой менять зум или масштаб, то там этого и не было.
Эти параметры задаются в html-коде. Нужно сохранить на свой компьютер пример, исправить в коде zoom и т.д. и запустить.
Сергей
Ваня!!!!
Большая просьба, для особо непонятливых поясни, пожалуйста, более подробно с поэтапными скриншотами экрана.
Я установил в google chrome FireShot Lite, но у меня сохраняется только область экрана.
Я не могу понять куда вставлять найденные мной координаты и масштаб координаты?
Ваня
Прошу прощения, но на скриншоты времени нету :)
Нужно сохранить пример (на него есть ссылка в статье),
открыть файл блокнотом и исправить циферки (center и zoom), затем открыть этот файл браузером (для этого расширение файла должно быть html, а не txt).
Далее надо найти плагин для браузера, который сохраняет всю страницу, а не только то, что влезает в экран. Для хрома я такого плагина не знаю, а для фаерфокса есть ссылка в статье.
Сергей
Ваня! Спасибо, наконец я разобрался. Сейчас установил пробную версию FireShot Pro на 30 дней. Все работает. Где бы скачать бесплатную FireShot Pro?
Дмитрий
Иван, добрый день, не совсем понял, а как можно открыть сохранённую через fireshot картинку в блокноте, там же сплошная ересь открывается и не понятно ничего.
Ваня
Нужно взять код примера (в середине заметки), сохранить его к себе на компьютер. Открыть файл блокнотом и настроить ширину-высоту карты, координаты центра и увеличение (это подробно расписано в заметке). Затем открыть пример браузером, появится карта, а Fireshot сохранит это в виде картинки.
Дмитрий
О, вроде бы начинает получаться, а как узнать Id карты с моими метками.
Я пробовал вписать гостевую ссылку но он её не воспринимает.
Спасибо, за ответ и за штуку, очень здорово.
Ваня
Если использовать готовый конструктор от Яндекса, то он выдаёт код вставки скрипта, в котором можно изменить параметры width и height. Нужно создать файл test.html с разметкой пустого html файла, вставить туда скрипт от Яндекса с изменённой шириной и высотой. Затем использовать плагин для перевода в картинку. Файл я вам по почте отправил.

Ваш комментарий

comments powered by HyperComments

Следующая заметка

Иван ТитовИван Титов
Фрилансер, музыкант, физтех по жизни, семьянин, философ.
© 2013