我想優化和減少我的代碼,以提高它的性能和正確性。通過下面的這兩個不同的功能,我可以成功地在地圖上使用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