1

我有可以顯示疊加的活動。這個疊加層具有從網絡獲取的標記。如何實現標記從MapView覆蓋中的URL延遲加載

如何從URL中爲這個標記實現延遲加載?

THX,伊戈爾

+0

嘗試使用http://developer.android.com/reference/android/os/AsyncTask.html –

+0

你能告訴我一些樣品用的MapView和他們的標誌,讓你在後臺處理的所有數據? – 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

非常感謝Brian! – ihrupin

+0

沒問題。快樂的編碼! –

+0

我想你應該在for循環之後調用'populate()' – Reno