Я использую OpenLayers и хочу создать другое навигационное управление в верхней левой части. Я знаю, как добавлять элементы управления, но эта навигация добавляется по умолчанию при создании OpenLayers-Map. Поэтому я хочу удалить этот элемент управления, чтобы добавить его. Я уже знаю, что по умолчанию используется OpenLayers.Control.PanZoom.
Как удалить стандартные элементы управления в OpenLayers-Map?
Ответ 1
Объект карты имеет свойство controls
, которое представляет собой массив объектов OpenLayers.Control
. Если это свойство явно не задано, OpenLayers предположит, что вам нужен набор управления по умолчанию, включая OpenLayers.Control.Navigation()
, OpenLayers.Control.PanZoom()
, OpenLayers.Control.ArgParser()
и OpenLayers.Control.Attribution()
.
Чтобы удалить PanZoom
или любой другой элемент управления по умолчанию, просто установите массив свойств controls
при создании объекта Map
. Вот пример кода:
var map = new OpenLayers.Map('map', {
controls: [
new OpenLayers.Control.Navigation(),
new OpenLayers.Control.ArgParser(),
new OpenLayers.Control.Attribution()
]
});
Вот живой example.
Обратите внимание, что, установив свойство controls
, вы не получите никаких объектов Control
по умолчанию. Любые элементы управления, которые вам нужны, должны быть добавлены вручную.
Вот ссылка на исходный код объекта Map
, если вы хотите увидеть, как он работает для вас.
Ответ 2
Я бы ожидал, что map.removeControl(OpenLayers.Control.PanZoom)
будет работать, но, по-видимому, нет.