Google 映射动画不适用于 setInterval 和 setTimeout
Google maps animation not working with setInterval and setTimeout
我正在使用 google 地图 API 开发动画。我在使用 setInteval 和 setTimeout 时遇到了一些问题。
实际上,在我的 jsfiddle 的第 247 行中,我定义了 myFunction(见下文),它每 300 毫秒调用函数 fi() 来为标记设置动画。
var myFunction = function(){
counter= 300;
clearInterval(myInterval);
var myInterval = setInterval(fi, counter, map, marker, g);
}
我希望函数 fi()(见下文)为标记设置动画,然后当它到达标记时它会在移动之前停止一会儿。为此,我清除了 setInterval(第 301 行),然后调用 myFunction() 在使用 setTimeout 延迟后重新启动动画。
function fi(m, mar, l) {
if (l[i].waypoint == 0) {
coords= l[i];
var latlng = new google.maps.LatLng(parseFloat(coords.lat), parseFloat(coords.lng));
route.getPath().push(latlng);
moveMarker(map, marker, latlng);
i++;
coords= l[i];
var latlng = new google.maps.LatLng(parseFloat(coords.lat), parseFloat(coords.lng));
route.getPath().push(latlng);
moveMarker(map, marker, latlng);
} else {
clearInterval(myInterval);
i++;
setTimeout(myFunction, 500);
}
}
我希望动画在延迟一段时间后继续播放,但它停止了。
有什么建议吗?
谢谢
使 myInterval
全局化,这对我有用。
var myInterval;
var myFunction = function(){
counter= 300;
clearInterval(myInterval);
myInterval = setInterval(fi, counter, map, marker, g);
}
我正在使用 google 地图 API 开发动画。我在使用 setInteval 和 setTimeout 时遇到了一些问题。
实际上,在我的 jsfiddle 的第 247 行中,我定义了 myFunction(见下文),它每 300 毫秒调用函数 fi() 来为标记设置动画。
var myFunction = function(){
counter= 300;
clearInterval(myInterval);
var myInterval = setInterval(fi, counter, map, marker, g);
}
我希望函数 fi()(见下文)为标记设置动画,然后当它到达标记时它会在移动之前停止一会儿。为此,我清除了 setInterval(第 301 行),然后调用 myFunction() 在使用 setTimeout 延迟后重新启动动画。
function fi(m, mar, l) {
if (l[i].waypoint == 0) {
coords= l[i];
var latlng = new google.maps.LatLng(parseFloat(coords.lat), parseFloat(coords.lng));
route.getPath().push(latlng);
moveMarker(map, marker, latlng);
i++;
coords= l[i];
var latlng = new google.maps.LatLng(parseFloat(coords.lat), parseFloat(coords.lng));
route.getPath().push(latlng);
moveMarker(map, marker, latlng);
} else {
clearInterval(myInterval);
i++;
setTimeout(myFunction, 500);
}
}
我希望动画在延迟一段时间后继续播放,但它停止了。
有什么建议吗?
谢谢
使 myInterval
全局化,这对我有用。
var myInterval;
var myFunction = function(){
counter= 300;
clearInterval(myInterval);
myInterval = setInterval(fi, counter, map, marker, g);
}