2

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

现在我想使用数据库中的数据(纬度和经度)将图钉放在地图上。我目前使用 Loader 加载游标并从 db 读取数据,然后将它们放入 a 中的列表视图中fragment activity(使用 2.3.3 平台中的支持包 v13)。但是,我想不出一种方法将其转换为在地图活动中的地图视图上绘图。如果我的活动扩展MapActivity,我不能使用方法getSupporLoaderManager().iniLoader(...)来初始化加载程序,因为它说错误。

我想保留加载器,因为如果数据量很大,它似乎处理得更快。我的问题是,如何使用Loaderclass in读取数据MapActivity?如果不可能,有什么更好的方式来读取数据并在地图上绘图?

任何建议或答案表示赞赏。

4

1 回答 1

0

这应该是可能的!我假设您可以在 MapActivity 中加载数据列表,因此让我们调用以Marker供进一步参考。只需使用可绘制对象来表示它们并扩展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 中

于 2012-06-20T22:24:31.227 回答