项目是vue写的,引用高德JS
最开始,是先删除原来的图层,再叠加图层, 中间会出现一下闪烁的感觉,很恶心。
然后各种百度,看其他人的文章,也没什么收获。高德文档,翻了几圈了,注释的代码都一大堆,各种函数测试了一圈。
后来发现Imagelayer的一个事件,关键就在于这玩意,解决了大问题,播放看着就流畅了。
img_layers.on('complete', function() {
if (that.img_layers_list.length > 0) {
that.img_layers_list.forEach(a => {
that.map.removeLayer(a) //remove
})that.img_layers_list = []
}
that.img_layers_list.push(img_layers)
});
AddImage(op) {
let that = this
let zsj = op.min ? op.min : [70, 15] //全国范围的定位
let yxj = op.max ? op.max : [140, 54]
let zooms = [0, 20]
//只能一直叠加,不能清理,不然地图会有闪动
let img_layers = new AMap.ImageLayer({
zIndex: 888, //设置大点,避免AMap.TileLayer.Satellite挡住
url: op.imgurl,
bounds: new AMap.Bounds(
zsj, //左下角
yxj //右上角
),
zooms: zooms,
});
//必须先加载完毕在清理,不然会有闪动的效果
img_layers.on('complete', function() {
if (that.img_layers_list.length > 0) {
that.img_layers_list.forEach(a => {
that.map.removeLayer(a) //remove
})
that.img_layers_list = []
}
that.img_layers_list.push(img_layers)
});
that.map.addLayer(img_layers)
},
顺带记录下那个时间轴,也是恶心死了(0-100)的范围
let mllen = 100 / (this.LeiDa.length - 1)
计算步长,又会出现有小数点太多,
this.step = Math.floor(mllen * 100) / 100 换算吧
这里使用Math.floor,不进位,开始使用round(),直接给我溢出了100。。
js的小数运算真心恶心