1
我正在一個while循環內運行一個處理程序,對一個緯度/經度跨度,所以如果我在一定範圍之外,那個地圖會自動放大。我使用這個完全相同的設置,比較縮放級別而不是跨度,它工作得很好。這是我在做什麼...雖然循環縮放動畫不執行?
public static void smoothZoomToSpan(final MapController controller,
MapView v, GeoPoint center, int latitudeSpan, int longitudeSpan) {
final Handler handler = new Handler();
final MapView mapView = v;
final int currentLatitudeSpan = v.getLatitudeSpan();
final int currentLongitudeSpan = v.getLongitudeSpan();
final int targetLatitudeSpan = latitudeSpan;
final int targetLongitudeSpan = longitudeSpan;
controller.animateTo(center, new Runnable() {
public void run() {
int curLatSpan = currentLatitudeSpan;
int curLngSpan = currentLongitudeSpan;
int tarLatSpn = targetLatitudeSpan;
int tarLngSpan = targetLongitudeSpan;
long delay = 0;
while ((curLatSpan - 6000 > tarLatSpn)
|| (curLngSpan - 6000 > tarLngSpan)) {
Log.e("ZoomIn", "Thinks we should!");
handler.postDelayed(new Runnable() {
@Override
public void run() {
controller.zoomIn();
Log.e("ZoomIn", "Zoomed");
}
}, delay);
delay += 150; // Change this to whatever is good on the
// device
}
Log.e("ZoomIn", "completed");
}
});
}
當我執行這段代碼後,Logcat輸出「Thinks we should!」 (基本上是淹沒日誌)無盡的。但是它從來不會對我的處理程序做任何事情......實際的zoomIn調用永遠不會觸發,並且它會一直循環直到我強制關閉我的應用程序。我究竟做錯了什麼?
這聽起來像它可能是問題。你能舉一個更好的實現的例子嗎? – RyanInBinary
@RyanInBinary完成 - 有點在遞歸函數的性質 - 我沒有做任何事情,但希望它會讓你去 – JRaymond
這只是讓我更陷入困境。我不知道如何解釋你發佈的內容。我很感激幫助,但它所做的只是爲我創造了很多錯誤,我現在無法完成。我不是在尋找複製/粘貼的答案,但我無法讓你的代碼工作,我對這個過程的整合還不夠了解。 – RyanInBinary