1

我有可以显示叠加的活动。此叠加层具有来自网络的标记。

如何从 URL 实现此标记的延迟加载?

谢谢,伊戈尔

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 回答