因此,当我将鼠标悬停在任何明显突出显示的功能上时,我正尝试在其地图中添加一个选择交互。
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”提及(如果有任何意义)。
答案 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);
这样做的一个副作用是,您将删除进行树式砍伐的选项,但是,如果没有这种方法,您将生存下来。
希望这会有所帮助!