Google マップを使用して、等間隔で更新される複数の位置をマークしています。正常に動作するマーカーに問題はありません。しかし、マーカーを更新するとき、およびマップを拡大すると、マーカーが消え、マップにマークされるまでに長い時間がかかります。まるで人々が突然いなくなったかのように見えます。
カウンタ クラスを使用して、更新マーカー ワーカー スレッドを等間隔で呼び出しています。
カウンタークラス
public class MyCount extends CountDownTimer{
public MyCount(long millisInFuture, long countDownInterval) {
super(millisInFuture, countDownInterval);
}
@Override
public void onFinish() {
new MapUpdater().execute("");
resetTimer();
}
public void resetTimer()
{
counter = new MyCount(5000,1000);
counter.start();
}
@Override
public void onTick(long millisUntilFinished) {
}
}
MapUpdater 非同期タスク
private class MapUpdater extends AsyncTask<String, Integer, String> {
@Override
protected void onPreExecute() {
Log.d("ASYN", "STARTED");
map.invalidate();
itemizedoverlay.doPopulate();
}
@Override
protected String doInBackground(String... params) {
updatePosition();
return "finished";
}
@Override
protected void onProgressUpdate(Integer... values) {
super.onProgressUpdate(values);
}
@Override
protected void onPostExecute(String result) {
super.onPostExecute(result);
itemizedoverlay.doPopulate();
Log.d("ASYN", "ENDED");
}
}
updatePosition() メソッド
public void updatePosition()
{
try{
lat_coordinates[]= CustomHttpClient.executeHttpPost("http://10.0.2.2/return_coord.php", postParameters);
lng_coordinates[]= CustomHttpClient.executeHttpPost("http://10.0.2.2/return_coord.php", postParameters);
}catch (Exception e) {
e.printStackTrace();
}
itemizedoverlay.removeAllOverlay();
itemizedoverlay.doPopulate();
try{
for(int i=0; i<lat_coordinates.length; i++)
{
GeoPoint point = new GeoPoint((int)(lat_coordinates[i]*1E6),(int)(lng_coordinates[i]*1E6));
try {
addresses = geocoder.getFromLocation(lat_coordinates[i],lng_coordinates[i], 1);
} catch (NumberFormatException e) {
// TODO Auto-generated catch block
e.printStackTrace();
Log.d("update", "no format exception");
}catch (Exception e) {
Log.d("update", e.toString());
}
overlayitem = new OverlayItem(point,"title",addresses.get(0).getAddressLine(0));
itemizedoverlay.addOverlay(overlayitem);
}
}catch(NullPointerException e){
e.getStackTrace();
}
finally{
overlayList.add(itemizedoverlay);
}
}
助言がありますか?アプリケーション全体を台無しにする更新には時間がかかります。
ありがとう