我正在使用谷歌地图标记多个位置,这些位置以相等的时间间隔更新。他们工作正常的标记没有问题。但是在更新标记时以及放大地图时,标记会消失,并且需要很长时间才能在地图中标记。看起来好像人们突然消失了。
我正在使用计数器类以相等的间隔调用更新标记工作线程。
专柜课
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);
}
}
有什么建议吗?更新它会破坏整个应用程序需要很长时间。
由于