如何从MapView中的标记/引脚打开一个新的活动/布局?

时间:2012-07-30 09:31:03

标签: android google-maps android-activity

如何在Pin Map / Marker中打开Android MapView中的新活动?

像这样,然后我想点击一个标记,它应该打开一个新的活动, 我怎么能这样做?

mycode的:

 private GeoPoint getPoint(double lat, double lon) {
return(new GeoPoint((int)(lat*1000000.0),
                      (int)(lon*1000000.0)));

}

私有类SitesOverlay扩展了ItemizedOverlay {     private List items = new ArrayList();

public SitesOverlay(Drawable marker) {
  super(marker);

  boundCenterBottom(marker);

  items.add(new OverlayItem(getPoint(47.17612,
          8.499727),
                            "TCS", "TCS Camping Brüggli"));
  items.add(new OverlayItem(getPoint(47.57612,
          8.499727),
                            "",
                            ""));
  items.add(new OverlayItem(getPoint(00.765136435316755,
                                      00.97989511489868),
                            "",
          ""));
  items.add(new OverlayItem(getPoint(00.0686417491799,
                                      00.01572942733765),
                            "",
                    ""));

  populate();
}

@Override
protected OverlayItem createItem(int i) {
  return(items.get(i));
}




@Override
protected final boolean onTap(int i) {
         //Do you job here.
       startActivity(new Intent(MaptestActivity.this,SettingsActivity.class));
    return false;

1 个答案:

答案 0 :(得分:1)

https://github.com/jgilfelt/android-mapviewballoons

在此链接中,我们有一个包“mapviewballoons.example.simple”

在这个“mapviewballoons.example.simple”包中有一个类“SimpleItemizedOverlay.java”在这段代码中进行了一些修改。

package mapviewballoons.example.simple;

public class SimpleItemizedOverlay扩展了BalloonItemizedOverlay {

private ArrayList<OverlayItem> m_overlays = new ArrayList<OverlayItem>();
private Context c;

public SimpleItemizedOverlay(Drawable defaultMarker, MapView mapView) {
    super(boundCenter(defaultMarker), mapView);
    c = mapView.getContext();
}

public void addOverlay(OverlayItem overlay) {
    m_overlays.add(overlay);
    populate();

}

@Override
protected OverlayItem createItem(int i) {
    return m_overlays.get(i);
}

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

@Override
protected boolean onBalloonTap(int index, OverlayItem item) {
    Toast.makeText(c, "onBalloonTap for overlay index " + index,
            Toast.LENGTH_LONG).show();

    c.startActivity(new Intent(c.getApplicationContext(), NewActivity.class));

    return false;
}

}

这是修改代码,

@Override
protected boolean onBalloonTap(int index, OverlayItem item) {
    Toast.makeText(c, "onBalloonTap for overlay index " + index,
            Toast.LENGTH_LONG).show();

    c.startActivity(new Intent(c.getApplicationContext(), NewActivity.class));

    return false;
}


  Call different activities,


@Override
protected boolean onBalloonTap(int index, OverlayItem item) {
    Toast.makeText(c, "onBalloonTap for overlay index " + index,
            Toast.LENGTH_LONG).show();
            if (index == 0)
            {
    c.startActivity(new Intent(c.getApplicationContext(), NewActivity.class));
             } else {
              c.startActivity(new Intent(c.getApplicationContext(), secondNewActivity.class));

    return false;
}