是否可以在MapActivity中使用Loaders类?

时间:2012-06-20 21:59:04

标签: android

我有一个Android应用程序来定期记录位置并在后台存储在数据库中。 db附带内容提供商。使用报警接收器和服务来设置重复记录任务。

现在我想在数据库中使用数据(lat& long)将引脚放在地图上。我目前使用Loader加载游标并从db读取数据,然后将它们放入fragment activity的列表视图中(使用2.3.3平台中的支持包v13)。但是我无法找到一种方法将其转换为地图视图中的地图视图中的绘图。如果我的活动延伸MapActivity,我就无法使用方法getSupporLoaderManager().iniLoader(...)初始化加载程序,因为它显示错误。

我想保留加载程序,因为如果数据大小很大,它似乎处理得更快。我的问题是,如何使用Loader中的MapActivity类来阅读数据?如果不可能,有什么更好的方法来读取数据并在地图上绘图?

任何建议或回答都表示赞赏。

1 个答案:

答案 0 :(得分:0)

这应该是可能的!我假设您可以在MapActivity中加载数据列表,因此请调用Marker以供进一步参考。只需使用drawable来表示它们并扩展ItemizedOverlay

public class MarkerOverlay extends ItemizedOverlay<OverlayItem>{

  Collection<Marker> mMarkers;

  public MarkerOverlay(Drawable drawable, Collection<Marker> markers){
    super(drawable);
    mMarkers = marker;
  }

  @Override
  public OverlayItem createItem(int index){
    Marker m = mMarkers.get(index);
    return new OverlayItem(new GeoPoint(m.getLatitude(), m.getLongitude()),
                           m.getTitle(), m.getSnippet();
  }

  @Override
  public int size(){
    return mMarkers.size();
  }

}
在MapActivity中你可以这样做:

MarkerOverlay mMarkerOverlay;

public void onCreate(Bundle icicle){
  super(icicle);
  ArrayList<Marker> list = Cursor.getList(); //fetch your data from Cursor
  mMarkerOverlay = new MarkerOverlay(getResources().getDrawable(
                               R.drawable.some_marker_drawable),
                               list);
  getOverlays().add(mMarkerOverlay); 

}

你可以为每个标记进一步提供独特的绘图。只需在返回之前在createItem中设置它