我想优化和减少我的代码,以提高它的性能和正确性。通过下面的这两个不同的功能,我可以成功地在地图上使用pathIndex
向前和向后移动Google Map Marker
,在GPS坐标数组上计算出来[我没有包括这部分代码,因为我认为它不是这个问题,而是我可以并且会在需要时发布]。是否可以用一个替换两个相反和不同的功能?
这是我的代码:
1功能:
function animate() {
if (pathIndex < coord.length && mapAnimationStatus != PLAY_PAUSED) {
googleMapsMarker.setPosition(coord[pathIndex]);
googleMap.panTo(coord[pathIndex]);
pathIndex += 1;
if (pathIndex == coord.length) {
pause();
pathIndex = 0;
mapAnimationStatus = NOT_PLAY;
return;
}
timerHandler = setTimeout("animate(" + pathIndex + ")", 1000);
}
}
第2个功能:
function animateRewind() {
if (pathIndex >= 0 && mapAnimationStatus != PLAY_PAUSED) {
googleMap.panTo(coord[pathIndex]);
googleMapsMarker.setPosition(coord[pathIndex]);
if (pathIndex == 0) {
pause();
mapAnimationStatus = NOT_PLAY;
return;
}
pathIndex -= 1;
timerHandler = setTimeout("animateRewind(" + pathIndex + ")", 1000);
}
}
正如你可以看到这两个函数共享了很多的部分代码,它认为它们可以替换为一个单一的原因,但我不能figur如何做到这一点。
那么,是否可以创建一个单独的function
来管理这两个不同的动画?
你能交换'panTo'和'setPosition'电话?你可以用'pause'调用交换'pathIndex = 0;'吗?如果是这样,我会有一个相当简单的解决方案 – Bergi 2014-10-31 14:53:39
为什么'setTimout'中的'animate'和'animateRewind'调用需要一个参数? – Bergi 2014-10-31 14:54:47
@Bergi你是什么意思的“交换pathIndex”? – Aluminum 2014-10-31 15:01:01