在AsyncTask中填充地图需要触摸屏来查看点

时间:2011-10-27 22:02:29

标签: android android-asynctask android-mapview

我的mapview存在问题 - 我用AsyncTask填充它,但是在完成之后点数不会显示,直到屏幕被点击(在第一次触摸后所有点都显示正确)。

OnCreate中:

  

dialog = ProgressDialog.show(MyMap.this,“Populating Map”,                 “请等一下......”,真的);

     

new AddOverlays()。execute();

我的AsyncTask:

class AddOverlays extends AsyncTask <Void, Void, String>{
        @Override
        protected String doInBackground(Void... unsued) {

                //do my looping work to add items to map

            mapOverlays.add(itemizedOverlay);   

            String nothing = "";
            return nothing;
        }

        @Override
        protected void onProgressUpdate(Void... unsued) {

        }

        @Override
        protected void onPostExecute(String sResponse) {
            if (dialog.isShowing())
                dialog.dismiss();
        }
    }

1 个答案:

答案 0 :(得分:2)

尝试致电: 来自UI线程的invalidate() 要么 来自另一个帖子的postInvalidate()

在MapView对象上

以使地图视图重新绘制。

您应该在mapOverlays.add(itemizedOverlay);中致电onPostExecute(String sResponse),因为添加新的叠加层并不是一项昂贵的操作。

我想你会在doInBackground(Void... unused)中做一些昂贵的操作,因为到目前为止你并不需要整个AddOverlays任务。