1

オーバーレイを表示できるアクティビティがあります。このオーバーレイには、Webから取得するマーカーがあります。

このマーカーのURLから遅延読み込みを実装するにはどうすればよいですか?

Thx、Igor

4

1 に答える 1

3

あなたがする必要があるのは、データを取得するために AsyncTask を作成することです。非同期タスクが実行され、データが取得されると、UI スレッドは onPostExecute() を呼び出します。onPostExecute() メソッドでは、Android コードの例と同じように、マップ ビューにデータを追加します。

これがほぼ完全な例です。これで穴埋めできるはずです。

    public class SomeActivity extends MapActivity {
        private MapView mYourMapView;

        protected void onCreate(Bundle yourbundle){
          super.onCreate(yourbundle);
          setContentView(R.layout.yourcontentview);

          mYourMapView = (MapView)findViewById(R.id.yourmapviewid);

          GetYourDataTask task = new GetYourDataTask(mYourMapView);
          task.execute();
        }
     }

     public class GetYourDataTask extends AsyncTask<Void, Void, Void>{
           private MapView mView;
           private List<Items> mYourItemsFromInternetSource;

           public GetYourDataTask(MapView view){
              this.mView = view;
           }

           protected Void doInBackground(Void... params){
                .....get some data from internets
                mYourItemsfromInternetSoruce = something you got from internet;
                return null;
           }

           protected Void onPostExecute(){
                YourOverlay overlay = new YourOverlay(mYourItemsFromInterSource);
                mView.getOverlays().add(overlay);
           }
    }

    public YourOverlay extends ItemizedOverlay<OverlayItem>{
              private List<OverlayItem> mItems;
              public YourOverlay(List<Item> itemsFromInternet)[
                     super(boundCenterBottom(someContext.getResources().getDrawable(R.drawable.map_pin)));
                     //for your items create overlay items then
                     List<OverlayItem> createdItems = someConvertFunction(itemsFromInternet);
                     for(OverlayItem item: createdItems){
                          mItems.add(item);
                          populate();
                     }
               }
    }
于 2011-10-09T22:02:55.333 に答える