使用Itemized Overlay从mapActivity重定向到Activity

时间:2011-12-01 15:48:54

标签: android

我有一些感兴趣的地图活动。当用户点击兴趣地图点时,我想转移到新的活动!这可能吗?为了使用Itemizes叠加层来获得这些兴趣点像这样:

public class HelloItemizedOverlay extends ItemizedOverlay<OverlayItem>
{
 private ArrayList<OverlayItem> mOverlays = new ArrayList<OverlayItem>();
 private Context mContext;

 public HelloItemizedOverlay(Drawable defaultMarker, Context context)
 {
 super(boundCenterBottom(defaultMarker));
 mContext = context;
 }

 public void addOverlay(OverlayItem overlay)
 {
 mOverlays.add(overlay);
 populate();
 }
 @Override
 protected OverlayItem createItem(int i)
 {
 return mOverlays.get(i);
 }
 @Override
 public int size()
 {
 return mOverlays.size();
 }
 @Override
 protected boolean onTap(int index)
 {
 OverlayItem item = mOverlays.get(index);
 AlertDialog.Builder dialog = new AlertDialog.Builder(mContext);
 dialog.setTitle(item.getTitle());
 dialog.setMessage(item.getSnippet());
 dialog.show();
 return true;
 }
}

然后在我的主要活动中呼叫

List<Overlay> mapOverlays = mapView.getOverlays();
 Drawable drawable = this.getResources().getDrawable(R.drawable.avatar);
 HelloItemizedOverlay itemizedoverlay = new HelloItemizedOverlay(drawable,this);
 GeoPoint point = new GeoPoint(379720148,237728327);
 OverlayItem overlayitem = new OverlayItem(point, "Laissez les bon temps rouler!", "I'm in Athens!");

     GeoPoint point2 = new GeoPoint(73185812,78480667);
     OverlayItem overlayitem2 = new OverlayItem(point2, "Namashkaar!", "I'm in Hyderabad, India!");

     itemizedoverlay.addOverlay(overlayitem);
     itemizedoverlay.addOverlay(overlayitem2);

     mapOverlays.add(itemizedoverlay);

当用户点击感兴趣的地图点时获取一些文字!谢谢

2 个答案:

答案 0 :(得分:0)

将您的代码放在Activity onTap()的{​​{1}}内打开新的HelloItemizedOverlay

protected boolean onTap(int index)
{
    OverlayItem item = mOverlays.get(index); // can be used to send data
    Intent in = new Intent(mContext, NextActivity.class);
    mContext.startActivity(in); 
}

答案 1 :(得分:0)

@Adil已回答将新活动放入onTap()。现在,由于您要移动到具有不同叠加项集的地图,您应该通过意图(或任何其他方式)将这些值传递到第二个地图,该地图应该从{{1}中收到的点填充地图来自上一个活动 因此,这样您将只有2个地图活动,并且根据通过意图传递给哪个值,第二个地图将使用它们作为标记的种群。
要为意图添加点,您可以执行以下操作:
onCreate()
如果您希望传递多个点,可以尝试在for循环中添加上面的行,并为每个值提供不同的键:

toBargeMap.putExtra("point1", "your_geopoint_here");

其中toSecondMap是第二个map的意图。然后在第二个map活动中提取这些以进行填充。