Страница 1 из 1

OpenLayers: манипуляции с кнопками контрола PanZoom

Добавлено: 04 фев 2011, 21:23
Denis Rykov
Рассмотрим пример сокрытия кнопки zoomWorld контрола PanZoom.
Контрол PanZoom по умолчанию добавляется на карту, если при ее создании не указано иное. Доступ к контролу можно получить так:

Код: Выделить всё

map.getControlsByClass('OpenLayers.Control.PanZoom')[0]
У контрола есть свойство buttons, содержащее массив div-ов его кнопок. Изучив исходники (файл Control/PanZoom.js), определяем, что нужная нам кнопка имеет индекс 5, получаем ее:

Код: Выделить всё

map.getControlsByClass('OpenLayers.Control.PanZoom')[0].buttons[5]
Чтобы скрыть эту кнопку просто изменим свойство visibility у этого div-а:

Код: Выделить всё

map.getControlsByClass('OpenLayers.Control.PanZoom')[0].buttons[5].style.visibility = 'hidden'
Можно и совсем удалить кнопку:

Код: Выделить всё

map.getControlsByClass('OpenLayers.Control.PanZoom')[0]._removeButton(map.getControlsByClass('OpenLayers.Control.PanZoom')[0].buttons[5]);
Однако на месте убранной кнопки остается пустота, двинем на ее место находящуюся под ней кнопку:

Код: Выделить всё

map.getControlsByClass('OpenLayers.Control.PanZoom')[0].buttons[6].style.top = 82;
Может есть какие-нибудь более красивые решения?

Re: OpenLayers: манипуляции с кнопками контрола PanZoom

Добавлено: 10 фев 2011, 17:04
il-a
http://www.openlayers.org/dev/examples/ ... anels.html

только надо именно
new OpenLayers.Control.PanPanel(),
new OpenLayers.Control.ZoomPanel()

а потом css

если просто вызвать PanZoom, а потом css - то не получится: там нет классов.

Re: OpenLayers: манипуляции с кнопками контрола PanZoom

Добавлено: 10 фев 2011, 21:30
Denis Rykov
Спасибо! Надо будет получше присмотреться к работе с CSS в рамках OpenLayers.