2012-04-15 13 views
2

Googleマップビューにジオポイントを追加するとします。これは私のコードが次のようになります。Googleマップで遅延のあるジオポイントを追加する

public ArrayList getLocations() { 
     ArrayList<OverlayItem> locations = new ArrayList<OverlayItem>(); 
     /* open SQLite database aanmaken als deze al dan niet bestaat */ 

    SQLiteDatabase myDB = openOrCreateDatabase(DATABASE_NAME, Context.MODE_PRIVATE, null); 
    SharedPreferences preferences = getSharedPreferences("data", 0); 
    String route_id = String.valueOf(preferences.getInt("route_id", 0)); 

    String[] resultColumns = new String[] { "_id", "route_id","naam", "lng", "lat" }; 
    String whereClause = "route_id=?"; 
    String[] whereArgs = new String[] {route_id}; 

     Cursor cursor = myDB.query(DATABASE_TABLE_LOCATIES, resultColumns, whereClause, 
       whereArgs, null, null, null, null); 

     cursor.moveToFirst(); 
     do { 
      String naam = cursor.getString(2); 
      Double lat = cursor.getDouble(4); 
      Double lon = cursor.getDouble(3); 
      GeoPoint point = new GeoPoint((int) (lat * 1E6),(int) (lon * 1E6)); 
      locations.add(new OverlayItem(point, naam,naam)); 
     } while (cursor.moveToNext()); 



    return locations; 
    } 

public void onCreate(Bundle savedInstanceState) { 
    InterestingLocations funPlaces = new InterestingLocations(marker); 
    mapView.getOverlays().add(getLocations); 
} 

このコードは、すべてのポインタをmapViewに一度に入れています。地図上に各ポインタを置くときに少し遅れが出ます。 どうすればこのことができますか?事前に

おかげ

答えて

2

まず

private Timer myTimer; 

onCreate()メソッド内でこれを追加し、グローバル変数を定義します。

myTimer = new Timer(); 
    myTimer.schedule(new TimerTask() { 
     @Override 
     public void run() { 
      TimerMethod(); 
     } 

    }, 0, 1000); 

} 

とクラスでこの機能を追加します。

private void TimerMethod() 
{ 
    this.runOnUiThread(Timer_Tick); 
} 

を定義し、これをグローバル変数として定義します。

private Runnable Timer_Tick = new Runnable() { 
public void run() { 

    //here is your job, instead of writing this [mapView.getOverlays().add(getLocations);] 

    //you have to create a loop for the list returned by getLocations() to add them in the timer one by one 
} 
}; 
+0

+1正解です。しかし、これらはクラス変数であり、グローバルではありません。グローバルは 'public'と' static'です。 – Stephan

+0

真の相手、私が特定の分野で話しているので、私が意味するクラスのグローバル。 –

+0

ありがとう、これは非常に有用だった –

関連する問題