Как реализовать маркер Lazy Загрузка с URL в наложении MapView - PullRequest
1 голос
/ 12 сентября 2011

У меня есть активность, которая может показать оверлей.Это наложение имеет маркеры, которые поступают из Интернета.

Как я могу реализовать отложенную загрузку с URL для этих маркеров?

Спасибо, Игорь

1 Ответ

3 голосов
/ 10 октября 2011

Что вам нужно сделать, это создать AsyncTask для получения ваших данных.После выполнения асинхронной задачи и получения данных поток пользовательского интерфейса вызовет 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();
                     }
               }
    }
...