我有可以显示叠加的活动。此叠加层具有来自网络的标记。
如何从 URL 实现此标记的延迟加载?
谢谢,伊戈尔
我有可以显示叠加的活动。此叠加层具有来自网络的标记。
如何从 URL 实现此标记的延迟加载?
谢谢,伊戈尔
您需要做的是创建一个 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();
}
}
}