1

오버레이를 표시 할 수있는 활동이 있습니다. 이 오버레이에는 웹에서 가져 오는 마커가 있습니다.MapView 오버레이의 URL에서 Marker Lazy Loading을 구현하는 방법

이 마커에 대해 URL에서 지연로드를 구현하려면 어떻게해야합니까?

들으, 이고르

+0

시도는 나에게지도보기와 자신의 마커 일부 샘플을주지하시기 바랍니다 수 http://developer.android.com/reference/android/os/AsyncTask.html –

+0

를 사용하면 백그라운드 프로세스에서 모든 데이터를 만드는 방법? – ihrupin

+0

알고 계십니까 ?? http://developer.android.com/guide/tutorials/views/hello-mapview.html –

답변

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(); 
        } 
       } 
    } 
+0

고마워, 브라이언! – ihrupin

+0

문제 없습니다. 해피 코딩! –

+0

for 루프 다음에'populate()'를 호출해야한다고 생각합니다. – Reno