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

Решенные задачи, первая запись - описание решения.
Ответить
Аватара пользователя
Denis Rykov
Гуру
Сообщения: 3335
Зарегистрирован: 11 апр 2008, 21:09
Статьи: 33
Проекты: 9
Репутация: 498
Ваше звание: Author
Контактная информация:

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

Сообщение Denis Rykov » 04 фев 2011, 21:23

Рассмотрим пример сокрытия кнопки 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;
Может есть какие-нибудь более красивые решения?
Spatial is now, more than ever, just another column- The Geometry Column.

il-a
Новоприбывший
Сообщения: 1
Зарегистрирован: 10 фев 2011, 16:59
Репутация: 0

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

Сообщение il-a » 10 фев 2011, 17:04

http://www.openlayers.org/dev/examples/ ... anels.html

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

а потом css

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

Аватара пользователя
Denis Rykov
Гуру
Сообщения: 3335
Зарегистрирован: 11 апр 2008, 21:09
Статьи: 33
Проекты: 9
Репутация: 498
Ваше звание: Author
Контактная информация:

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

Сообщение Denis Rykov » 10 фев 2011, 21:30

Спасибо! Надо будет получше присмотреться к работе с CSS в рамках OpenLayers.
Spatial is now, more than ever, just another column- The Geometry Column.

Ответить

Вернуться в «Рецепты»