IONIC V3升级OpenLayers至6.1.0后,fit方法带options参数失效求助
OpenLayers 6.x fit方法动画失效的解决办法
兄弟,我之前把OpenLayers从4.x升级到6.x的时候也踩过这个一模一样的坑!问题出在OL版本升级后fit方法的参数结构变了,不是你操作失误,是API的配置逻辑改了。
问题根源
在OpenLayers 4.6.5里,fit方法的动画配置(比如duration)可以直接放在第二个参数的顶层对象里,但到了6.1.0版本,所有动画相关的配置项都需要嵌套在animation子对象中,直接传顶层的duration会被忽略,导致动画不生效,只会有轻微的地图移动(其实是无动画的fit,但可能因为参数不识别出现异常)。
修复后的代码
把你的代码改成下面这样,就能正常触发带时长的适配动画了:
var extent = s_layer.getSource().getFeatures()[0].getGeometry().getExtent(); // 带动画的fit写法(OL6.x版本) this.map.getView().fit(extent, { animation: { duration: 1000 } });
额外小贴士
- 如果你需要配置其他动画属性(比如缓动效果),也都要放到
animation对象里,举个例子:
this.map.getView().fit(extent, { animation: { duration: 1000, easing: ol.easing.easeOut // 配置缓动函数 } });
- 升级OL版本后,建议多留意版本间的API变更细节,还有一些其他常用方法的参数、返回值也可能有调整,避免踩更多类似的小坑。
内容的提问来源于stack exchange,提问作者Naseer
相关产品推荐
相关产品推荐

