Клуб API Карт

Своя отрисовка динамической карты.

Ivan-Tilikin
15 октября 2010, 17:22

Подскажите, пожалуйста.

Есть необходимость отрисовывать динамическую карту (например в канвасе).

Вроде бы все сделано и все работает, но сейчас это делается так: двигаю динамическую карту, по событию гружу статическую и уже ее отрисовываю в канвас.

Вот тут советуют использовать слои и с помощью них отрисовывать, но что то чтение документации не помогло..

8 комментариев
Подписаться на комментарии к посту
Скажите, пожалуйста, а какую итоговую цель вы преследуете?
Итоговая цель - обрабоать изображение и на основании этой обработки нанести на уже на динамическую карту объекты.
Для обработки хотелось бы получить цвет пикселя в заданной точке. ну и для тестирования - отрисовать все это куда-нибудь. Поэтому хотелось бы получить картинку из динамической карты, но при этом не подгружаю ее как статическую.
Вы описали алгоритм действий, но так и не сказали зачем вам следовать по такому хитрому алгоритму =)

Если ваша точка задана геокоординатами, то узнайте номер тайла и смещение внутри него (с помощью класса YMaps.TileCoordinates). Когда вы узнаете номер тайла, вы сможете узнать его url и получить изображение тайла. Потом изображение загрузить в canvas и определить цвет точки.

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

Но точно ли вам это нужно?)
Если брать тайл по этому URL, но будет доставаться из кеша или ещё раз загружаться? 
Тайлы кэшируются.
обезиана с гранатой, уж простите.

вариант 1 - реализовать http://api.yandex.ru/maps/jsapi/doc/ref/reference/itile.xml - рисование тайла делегируется именно этой чтуке. Потом создаете кустомные maptype с использованием этого интерфейса и нужных картинок - и хоть обрисуйся.

вариант 2 - по различным событиям карты ловим различные апдейты, сканируем dom дерево карты и "переносим" его в канвас. Например чтобы сделать красивые зумы и анимации маркеров. работает за бесплатно.

вариант 3 - вспомнить что автоматическая обработка карты, а также обработка карты методом обвода контуров - запрещена. Как правилами АПИ так и обычными карто-авторскими


К сожалению я видимо не на столько силен яваскрипте, но объяснение первого варианта мне не помогло... я понимаю что если отрисовать тайл - то я получу что хочу, но как это сделать? средства апи, судя по документации не позволяют напрямую перерисовать тайл. Можете подсказать конкретнее?

А можно поподробнее про вариант 3?
что то в правилах апи не вижу ничего про автомматическую обработку, если не прав - прошу поправьте меня, желательно точной ссылкой..
http://api.yandex.ru/maps/jsapi/examples/#coordsystems
посмотрите примерчики.
а банальный просмотр вкладки "сеть" в фаербаге подскажет вам как составить url тайла нужного режима яндекс карт.
и, в принципе, быть может этого и будет достаточно

2.
....Сохранять, обрабатывать и видоизменять полученное через API Яндекс.Карт Содержание.....
Но на самом деле это относительная фигня - если вы выкачаете себе карту города, отфотошопите и повесите на стенку - никто особо ругаться не будет.
А вот если через обработку карты получите "свою" карту - будет ругаться уже не яндекс.

Но так как задача и цель не ясна эх
Я в свое время, до выкладки графов дорог на олимпиаду, спрашивал у яндексоидов разрешения парсить пробки чтобы сделать сервис предсказания как мне утром надо ехать - но всеже нельзя. А теже самые iПробки - они молча не спрашивали :)