Заполнение карты в AsyncTask нужно коснуться экрана, чтобы увидеть точки - PullRequest
2 голосов
/ 28 октября 2011

У меня возникла проблема с моим видом карты - я заполняю его AsyncTask, но после его завершения точки не отображаются, пока не будет нажат экран (после первого касания все точки отображаются правильно).

Создать:

dialog = ProgressDialog.show (MyMap.this, "Заполнение карты", "Пожалуйста, подождите ...", true);

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 Ответ

2 голосов
/ 28 октября 2011

Попробуйте вызвать: invalidate() из потока пользовательского интерфейса или postInvalidate() из другого потока

в вашем объекте MapView, чтобы перерисовать представление карты.

Вы должны вызвать mapOverlays.add(itemizedOverlay); in onPostExecute(String sResponse), так как добавление нового оверлея не является дорогой операцией.

Я полагаю, что вы будете выполнять какую-то дорогостоящую операцию в doInBackground(Void... unused), поскольку на данный момент вам на самом деле не нужна вся задача AddOverlays.

...