谷歌地图中的标记需要很长时间才能进行更新

时间:2012-12-30 19:05:03

标签: android performance google-maps

我正在使用谷歌地图标记多个位置,这些位置以相等的时间间隔更新。他们工作正常的标记没有问题。但是在更新标记时以及放大地图时,标记会消失,并且需要很长时间才能在地图中标记。看起来好像人们突然消失了。

我正在使用计数器类以相等的间隔调用更新标记工作线程。

专柜课

     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);
         }

}

有什么建议吗?更新它会破坏整个应用程序需要很长时间。

由于

0 个答案:

没有答案