Клуб API Карт

Своя кнопка в стандартном тулбаре

Пост в архиве.

Пытаюсь добавить свою кнопку к основному тулбару ("Навигация", "Выделение" и "Линейка"). Пока неудачно.

1. Вообще возможно ли добавить собственную кнопку к этим 3-м в таком же стиле??

2. Для чего служит конструктор IToolBarItem и в чем разница методов IToolBarItem.onAddToToolBar и ToolBar.add(item)??

3 комментария
YMaps.IToolDarItem - это интерфейс кнопки элемента управления YMaps.ToolBar. Это означает, что вам необходимо создать свой класс и определить в нем методы onAddToToolBar (будет вызывать при добавлении кнопки на панель тулбара) и onRemoveFromToolBar (вызывается при удалении кнопки с тулбара). Методы add() и remove() класса YMaps.ToolBar предназначены для добавления и удаления кнопки с тулбара.
Sergey Konstantinov
28 января 2016, 09:13
Можно использовать стандартную кнопку (YMaps.ToolBarButton) либо написать полностью свою. Для этого объект кнопки должен уметь добавлять себя на тулбар по вызову метода onAddToToolBar и удаляться с тулбара по вызову метода onRemoveFromToolBar. Например, простая текстовая кнопка:  
вот пример удаляющий 2-е стандартные кнопки из тулбара и добавляющий в тулбар 2-е свои кнопки с тем же функционалом что были у стандартных кнопок... toolbar = new YMaps.ToolBar(); btn1 = new YMaps.ToolBarRadioButton('default', {icon: "http://api-maps.yandex.ru/i/0.2/icons/icon-ruler.png", caption: "Линейка"}); btn2 = new YMaps.ToolBarRadioButton('default', {icon: "http://api-maps.yandex.ru/i/0.2/icons/icon-zoom.png", caption: "Увеличить"}); YMaps.Events.observe(btn1, btn1.Events.Select, function () { this.getMap().enableRuler(); }, toolbar); YMaps.Events.observe(btn1, btn1.Events.Deselect, function () { this.getMap().disableRuler(); }, toolbar); YMaps.Events.observe(btn2, btn2.Events.Select, function () { this.getMap().enableMagnifier(); }, toolbar); YMaps.Events.observe(btn2, btn2.Events.Deselect, function () { this.getMap().disableMagnifier(); }, toolbar); toolbar.remove(toolbar._btns[2]); toolbar.remove(toolbar._btns[1]); toolbar.add(btn1); toolbar.add(btn2); map.addControl(toolbar);