Подтвердить что ты не робот

OpenLayers: отключить масштабирование с двойным щелчком

OpenLayers по умолчанию масштабируется, когда пользователь дважды щелкает по карте.

Каков наилучший способ отключить это поведение?

4b9b3361

Ответ 1

Функция увеличения двойного щелчка, по-видимому, является функциональностью в элементе управления OpenLayers.Control.Navigation. Дополнительную информацию см. В OpenLayers Reference.

Небольшой и очень усталый пример:

var Navigation = new OpenLayers.Control.Navigation({
    defaultDblClick: function(event) { return; }
});

Я помню, что элемент управления Navigation автоматически добавляется на карту, если во время инициализации карты не установлены никакие элементы управления. Поэтому вам, возможно, придется добавить элемент управления Navigation your self.

Надеюсь, что это поможет =)

Ответ 2

Вышеприведенный ответ верен, но вам нужно будет явно добавить этот элемент управления на карту, чтобы переопределить навигационное управление по умолчанию, то есть

var Navigation = new OpenLayers.Control.Navigation({
  defaultDblClick: function(event) { return; }
});

map.addControl(Navigation);

По умолчанию добавляются следующие элементы управления: OpenLayers.Map: OpenLayers.Control.Navigation, OpenLayers.Control.PanZoom, OpenLayers.Control.ArgParser, OpenLayers.Control.Attribution

Итак, еще один вариант, если вы хотите отключить все эти поведения по умолчанию, - отправить пустой массив в параметр options конструктора карты открытых слоев, см. текст ссылки для более подробной информации.

Ответ 3

Документация OpenLayers 3 Ссылка.

Статический путь:

var map = new ol.Map({
    interactions: ol.interaction.defaults({ doubleClickZoom: false }),
    ...
});

Динамический путь:

var interactions = map.getInteractions();
for (var i = 0; i < interactions.getLength(); i++) {
    var interaction = interactions.item(i);                          
    if (interaction instanceof ol.interaction.DoubleClickZoom) {
        map.removeInteraction(interaction);
        break;
    }
}