Клуб API Карт

Как создать свой control

eldor.eldor
30 июня 2012, 11:29

Всем привет!

Можете ли скинуть ссылку или можете помочь идеями как создать свой контрол в api 2. 

Заранее спасибо:) 

11 комментариев
Подписаться на комментарии к посту
Sergey Temchenko
30 июня 2012, 16:02

Сам только что столкнулся с этим вопросом. Нужно создать выпадающий список с чекбоксами, перерыл всю доку, ничего умного не нанешел. Нашел только контрол созданный для 1.х api. Но он не портируется на 2. В итоге пришел к выводу, может не совсем красивому и правильному, но у нас есть класс обычной Кнопки http://api.yandex.ru/maps/doc/jsapi/2.x/ref/reference/control.Button.xml
и никто не запрещает поизвращаться не много, я попробовал, вроде работает. Так вот, создаем кнопку, вешаем на нее обработчик click и при клике проверяем если кнопка isSelected берем и тупо вклеиваем под кнопку(нужной ей дать id или name, чтобы отличать), нужный блок с контролам, при isSelected false вытираем его от туда.
Вот такой ужасный способ смог выжать я.
 Если есть вменяемый способ, буду рад его услышать.

В данный момент интерфейсы контролов серьезно рефакторят.

Самый простой способ сделать свой контрол - запрограммировать его с помощью, например, jQuery и положить в контейнер контролов карты

map.panes.get('controls').getElement()

Sergey Temchenko
1 июля 2012, 11:22

Извини, а ты мог бы по подробнее описать? Я просмотрел спецификацию, но что-то там не вижу параметра, чтобы указать какой контрол мне надо. Та и вроде get это не "положить", а add я там не вижу.
Спасибо.

var controlContainer = map.panes.get('controls').getElement();

var myControl = $('Мой контрол')

.bind('click', function (e) {

тут делаем что хотим

}).appendTo(controlContainer);

Sergey Temchenko
1 июля 2012, 11:29

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

это обычный дом-элемент

ты можешь сказать ему display:none и спозиционировать его с помощью css относительно родительского элемента

Sergey Temchenko
1 июля 2012, 11:41

position в смысле?
Я попробовал, вот, но этот тег не появляется на карте. Дополнительно не нужно ничего включать?

Sergey Temchenko
1 июля 2012, 12:10

Все нашел ошибочку.
map.panes.get('control').getElement();

надо

map.panes.get('controls').getElement();

Теперь все хорошо. Спасибо большое!

Спасибо всем, я сделал с помощью jQuery и все работает 

Sergey Temchenko
1 июля 2012, 11:27

Мог бы и ты отписаться, как ты это сделал, пожалуйста.