Клуб API Карт

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

thekashey
20 октября 2010, 10:24

Есть дизайнерское желание сдвинуть ВСЕ контролы яндекс карты( к коим сейчас отнесем и логотип и копирайты) на некорое растояние внутрь карты.

Так чтобы можно было края карты "запаковать" в различные полупрозрачные панельки, сквозь которые будет просвечиваться карта.

Лично я выцепил два варианта решения.

1 - обходим слой контролов, ищем элементы <10px от бордера. Выстаявляем им какой либо класс, на основе которого и будет сдвиг.

2 - маргинами и падингами уменьшаем адресуемую область карты, в данном случае тайлы будут рендеряться в другом размере, что приведет к тому что они будут немного раньше исчезать( за не надобностью ) при сдвиге карты.

Лечиться реализацией своего рендера тайлов, который будет знать что карта на самом деле больше чем кажеться.

Оба варианта, если честно, по идеалогическим причинам не подходят - первый грязный хак, который я в первые опробовал на гугл картах, и был искрене удивлен когда в Хроме элементы имели другую вложеность. Так что такое решение будет либо очень большим и шибко умным. Либо не стабильным. Второе вероятнее :)

А второй вариант просто не нравиться.

А как можно еще?

2 комментария
Подписаться на комментарии к посту
Все стандартные контролы можно сдвинь с помощью YMaps.ControlPosition.

Засада только с логотипом и копирайтами. Их стандартными средствами не сдвинуть, а только "грязнохакить".
Вообщем-то есть только два контрола позицией которых невозможно управлять - это копирайты с логотипом. Трудно что-то советовать, когда взламывают твой продукт, но если представить, что меня заставили, то я бы пошел по перому пути для логотипа и копирайтов. Остальные контролы сдвинул бы через указание ControlPosition. Логотип и копирайты можно однозначно заматчить по className.