Openlayers 3选择交互无法添加事件条件

时间:2019-03-05 16:28:41

标签: angular typescript openlayers openlayers-3

因此,当我将鼠标悬停在任何明显突出显示的功能上时,我正尝试在其地图中添加一个选择交互。

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 :(得分:0)

当前的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);

这样做的一个副作用是,您将删除进行树式砍伐的选项,但是,如果没有这种方法,您将生存下来。

希望这会有所帮助!