工作中,由于要模拟车辆信息的运动状态下的经纬度,需要每5秒改变一下车辆的经纬度。车辆信息结构如下:
{
longtitude: 104.07,
latitude: 30.67 ,
}
我设想的方法是,让每5秒分别给经纬度加上0.01,那么第一个5秒后,为:
{
longtitude: 104.07 + 0.01,
latitude: 30.67 + 0.01 ,
}
第二个5秒后就是
{
longtitude: 104.07 + 0.02,
latitude: 30.67 + 0.02 ,
}
第n个5秒后就是
{
longtitude: 104.07 + 0.01*n,
latitude: 30.67 + 0.01*n ,
}
现在问题来了,如果总是累加,那用不了多久,我的经纬值就会超出地图范围以外。所以,我现在希望,打个比方说,这个累加0.01*n
最多不能超出0.3,如果超出,则开始递减0.01,递减最多也不能超过-0.3。
换句话说,我现在有一个区间为[-0.3, 0.3],步长为0.01,从0开始累加(设累加和为let total = 0.01*n
),当total > 0.3
时,则开始累减0.01。直到total< -0.3
时,则又开始累加0.01。子子孙孙无穷尽也。
代码实现:
let step = 0.01
let total = 0
let positive = true //true means add step; false means decrease step.
setInterval(() => {
if (total > 0.3) {
positive = false
}
if (total < -0.3) {
positive = true
}
if (positive) {
total += step
} else {
total -= step
}
}, 5000)