OpenLayers 3 Отключить множественный выбор

Есть ли способ иметь selectInteraction в OpenLayers 3, который позволяет выбирать только одну функцию за раз?


person Tyler DeWitt    schedule 01.05.2015    source источник


Ответы (3)


определить взаимодействие выбора следующим образом:

select = new ol.interaction.Select (
    toggleCondition: ol.events.condition.never
)
person Paul    schedule 20.05.2015
comment
Исправьте ответ, он должен быть select = new ol.interaction.Select ({ toggleCondition: ol.events.condition.never }) - person Thomas Gratier; 23.01.2017

Не совсем уверен, что хорошо понял.

Если вы перейдете к документу по API для OpenLayers 3.4 и снимите флажок Stable Only в правом верхнем углу страницы, вы увидите параметр multi для управления этим. Обычно, согласно документу, то, что вы спрашиваете, уже по умолчанию.

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

person Thomas Gratier    schedule 02.05.2015
comment
Извините за путаницу. Параметр multi предназначен для выбора нескольких функций одним щелчком мыши. Я хочу отключить возможность удерживать клавишу shift и выбирать несколько функций. - person Tyler DeWitt; 04.05.2015

Для OpenLayers4 это легко сделать, комбинируя условия.

Например, условие, которое выбирает только по singleClick, а не при нажатии shiftKey:

const select = new Select({
  condition: (mapBrowserEvent) => {
    return singleClick(mapBrowserEvent) && !shiftKeyOnly(mapBrowserEvent)},
  layers: [layer]
});

Дополнительные условия см. в документе API: http://openlayers.org/en/latest/apidoc/module-ol_events_condition.html

person Ludvik Brodl    schedule 26.10.2018