Выберите объекты с помощью кнопки И дважды щелкните в Openlayers 3 - PullRequest
0 голосов
/ 13 мая 2019

Я бы хотел щелкнуть и дважды щелкнуть выбранные объекты одновременно в открытых слоях 3. Параметр условие при создании ol.interaction.Select требует только одну функцию, поэтому требуется обходной путь

Я пытался написать свою собственную функцию условия, которая вызывает соответствующую функцию, я думал о чем-то вроде ...

this.selectType = (feature) => {
      if (feature){
        if(feature.onclick){
          return ol.events.condition.singleClick
        } else {
          return ol.events.condition.doubleClick
        }
      }
    }

this.selectInteraction = new ol.interaction.Select({
      condition: this.selectType(),
      toggleCondition: ol.events.condition.shiftKeyOnly,
      layers: this.layerFilter,
      features: this.features,
      style: this.selectStyle,
    });

... но безуспешно.

Я понимаю, что мог бы создать два отдельных взаимодействия для выбора функций, но это было бы не так, потому что это потребовало бы репликации большого количества кода в зависимости от взаимодействия Select.

Кто-нибудь знает, возможно ли это даже в openlayers и как справиться с такой ситуацией?

Большое спасибо

1 Ответ

0 голосов
/ 13 мая 2019

Условие - это функция, которая принимает событие браузера карты и возвращает логическое значение.Основываясь на Alt + Cick в примере OpenLayers https://openlayers.org/en/v4.6.5/examples/select-features.html, чтобы выбрать один или два щелчка, вам понадобится что-то вроде

this.selectType = (mapBrowserEvent) => {
          return ol.events.condition.singleClick(mapBrowserEvent) ||
              ol.events.condition.doubleClick(mapBrowserEvent);
    }

this.selectInteraction = new ol.interaction.Select({
      condition: this.selectType, // pass the function, don't call it!
      toggleCondition: ol.events.condition.shiftKeyOnly,
      layers: this.layerFilter,
      features: this.features,
      style: this.selectStyle,
    });
...