Openlayers 3 выберите взаимодействие не может добавить условие события - PullRequest
6 голосов
/ 05 марта 2019

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

import Select from 'ol/interaction/select';
import pointerMove from 'ol/events/condition.js'

this.selectPointerMove = new Select({
   condition: pointerMove
});
this.coreMapComponent.map.addInteraction(this.selectPointerMove);

Поле условия выдает ошибку -

 Type 'typeof events' is not assignable to type 'EventsConditionType'.
 Type 'typeof events' provides no match for the signature '(event: MapBrowserEvent): boolean'.

Без условия работает нормально по щелчку мыши.

Следует упомянуть об этом в проекте Angular 6, используя "@ types / ol": "^ 4.6.2", если это имеет какое-либо значение.

1 Ответ

0 голосов
/ 13 марта 2019

Текущая версия Openlayers 5.x.x нуждается в некоторых набирающих обновлениях . Поскольку даже вы используете Openlayers 5.x.x, установленные типы относятся к версии 4.x.x.

Это означает, что вам нужен обходной путь в вашем коде.

Поскольку все наборы в версии 4.x.x используют метод DefaultExports , вы не можете использовать NamedExports , например:

import {pointerMove} from 'ol/events/condition';

Решение:

Один из вариантов, который вы можете сделать, это импортировать все как переменную . При этом вы избежите ошибки TS:

import Select from 'ol/interaction/select';
import * as condition from 'ol/events/condition';

this.selectPointerMove = new Select({
   condition: (condition as any).pointerMove
});
this.coreMapComponent.map.addInteraction(this.selectPointerMove);

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

Надеюсь, это поможет!

...