OpenLayers 3 Disable Multi-Select
Asked Answered
B

3

5

Is there a way to have a selectInteraction in OpenLayers 3 that only allows one feature to be selected at a time?

Bethannbethanne answered 1/5, 2015 at 15:3 Comment(0)
D
14

define select interaction as follow:

select = new ol.interaction.Select (
    toggleCondition: ol.events.condition.never
)
Duax answered 20/5, 2015 at 18:34 Comment(2)
Fix the answer, it should be select = new ol.interaction.Select ({ toggleCondition: ol.events.condition.never })Abscess
If anyone is using VueLayers, I got this to work by putting import { never } from 'ol/events/condition' at the top of the scrpt and then defining it in the data block as never and then specifying :toggle-condition="never" in the <vl-interaction-select> component.Hospitalet
A
2

Not really sure I understood well.

If you go to the API doc for OpenLayers 3.4 and untick Stable Only on the page top right, you will see a multi option to manage this. Normally, according to the doc, what you are asking is already by default.

Multi A boolean that determines if the default behaviour should select only single features or all (overlapping) features at the clicked map position. Default is false i.e single select

Abscess answered 2/5, 2015 at 1:30 Comment(1)
Sorry for the confusion. The multi option is for selecting multiple features with one click. I want to turn off the ability to hold the shift key and select multiple features.Bethannbethanne
I
1

For OpenLayers4 this can easily be done by combining conditions.

For example a condition that only selects on singleClick and not when shiftKey is pressed:

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

Find more conditions in the API doc: http://openlayers.org/en/latest/apidoc/module-ol_events_condition.html

Imperium answered 26/10, 2018 at 7:16 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.