1

オーバレイを表示できるアクティビティがあります。このオーバーレイにはウェブから取得するマーカーがあります。MapViewオーバーレイのURLからのマーカー遅延読み込みの実装方法

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

Thxを、イゴール

+0

は、あなたが私のMapViewとそのマーカーといくつかのサンプルをお願いでき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()メソッドでは、サンプルのアンドロイドコードと同じようにデータをマップビューに追加します。

これは、ほとんど完全な例です。あなたはこれで穴を埋めることができるはずです。

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

私は 'populate()'をforループの後に呼び出すべきだと思います – Reno

関連する問題