Verschiedene Activitys zu verschiedenen MapOverlays aufrufen

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Verschiedene Activitys zu verschiedenen MapOverlays aufrufen

    Hallo Community,

    ich habe mal wieder eine Frage. Sitze schon seit Tagen dran und google auch schon lange nach einer Lösung. Also folgendes Problem:

    Habe das Testprojekt erstellt, was auf der Android Developer Seite zu finden ist: developer.android.com/resource…/views/hello-mapview.html

    Funktioniert auch sehr gut. Nun habe ich zwei MapOverlays erstellt und zu jeder Location auch eine Detailseite. Nun klickt man drauf und es öffnet sich der AlertDialog. Wie kriege ich es nun hin, dass ich dem Alertdialog einen Button hinzufüge, der bei der einen Location die eine Activity öffnet und bei der anderen Location eine andere Activity? Unten sind die 2 entscheidenden Klassen gezeigt. Ich hoffe, dass ihr wisst, was ich meine und mir helfen könnt.

    Liebe Grüße
    L.Capps

    [code]

    import java.util.ArrayList;

    import android.app.AlertDialog;
    import android.content.Context;
    import android.graphics.drawable.Drawable;
    import com.google.android.maps.ItemizedOverlay;
    import com.google.android.maps.OverlayItem;


    public class HelloItemizedOverlay extends ItemizedOverlay {

    private ArrayList<OverlayItem> mOverlays = new ArrayList<OverlayItem>();
    private Context mContext;

    public HelloItemizedOverlay(Drawable defaultMarker) {
    super(boundCenterBottom(defaultMarker));
    // TODO Auto-generated constructor stub
    }

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

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

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

    @Override
    public int size() {
    // TODO Auto-generated method stub
    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());

    //Diese Stelle
    dialog.setNeutralButton("Details", listener????)
    ???

    dialog.show();
    return true;
    }
    }/code]


    [code]import java.util.List;

    import com.google.android.maps.GeoPoint;
    import com.google.android.maps.MapActivity;
    import com.google.android.maps.MapView;
    import com.google.android.maps.Overlay;
    import com.google.android.maps.OverlayItem;

    import android.app.Activity;
    import android.graphics.drawable.Drawable;
    import android.os.Bundle;
    import android.widget.LinearLayout;

    public class KarteActivity extends MapActivity {
    List<Overlay> mapOverlays;
    Drawable drawable;
    HelloItemizedOverlay itemizedOverlay;
    LinearLayout linearLayout;
    MapView mapView;
    @Override
    public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.karte_layout);

    mapView = (MapView) findViewById(R.id.mapview);
    mapView.setBuiltInZoomControls(true);
    mapView.setSatellite(true);

    mapOverlays = mapView.getOverlays();
    drawable = this.getResources().getDrawable(R.drawable.ic_launcher);
    HelloItemizedOverlay itemizedOverlay = new HelloItemizedOverlay(drawable, this);

    GeoPoint admiral = new GeoPoint(50595879,8713035);
    OverlayItem overlayitem = new OverlayItem(admiral, "Location1", "Test1");


    GeoPoint agostea = new GeoPoint(52595878,8713035);
    OverlayItem overlayitem2 = new OverlayItem(agostea, "Location2", "Test2");


    itemizedOverlay.addOverlay(overlayitem);
    itemizedOverlay.addOverlay(overlayitem2);
    mapOverlays.add(itemizedOverlay);

    }

    @Override
    protected boolean isRouteDisplayed() {
    return false;
    } }/code]
  • Hi L.Capps,


    Wie kriege ich es nun hin, dass ich dem Alertdialog einen Button hinzufüge, der bei der einen Location die eine Activity öffnet und bei der anderen Location eine andere Activity?


    Hier wird erklärt wie du einem Custum dialog erstellst. Link

    und dann mach einfach innerhalb der onTab Methode des Overlayers ein unterscheidung(switch/case wirde sich an bieten) welche Location du gerade aufgerufen hast.
    die Variable index entspricht der Reichenfolge wie du einen Objekt des Overlayers der Karte hinzufügst.
    Pseudocode:

    Quellcode

    1. switch(index)
    2. case 1:
    3. rufe Dialog für location 1 auf oder setzte hier die Activivt die aufgerufen werden soll wenn auf den Button geklickt wird
    4. case 2:
    5. location 2
    6. usw


    mfg Titus