2012-11-11 6 views
5

Ich erstelle eine OSMdroid Mapview in meiner MapActivity.java und ich möchte hinzufügen & Pop-ups - ich weiß nur, wie dies in .xml getan wird, aber da MapView keine .xml ich bin verwirrt, wie ich (Bild) Schaltflächen in meinem Java-Code platzieren kann.Schaltflächen über Mapview

@Override 
public void onCreate(final Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 

    // Setup base map 
    final RelativeLayout rl = new RelativeLayout(this); 

    CloudmadeUtil.retrieveCloudmadeKey(getApplicationContext()); 

    final MapView osmv = new MapView(this, 256); 

    myMapController = osmv.getController(); 

    rl.addView(osmv, new RelativeLayout.LayoutParams(LayoutParams.FILL_PARENT, 
      LayoutParams.FILL_PARENT)); 
    osmv.setBuiltInZoomControls(true); 
    osmv.setMultiTouchControls(true); 

    myLocationoverlay = new MyLocationOverlay(this, osmv); 

//*snip* setup of map, mapcontrollers, tiles etc... 
    osmv.getOverlays().add(tilesOverlay); 
    osmv.getOverlays().add(myLocationoverlay); 

    this.setContentView(rl); 
} 

edit: ich über eine Taste rede wie

<ImageButton 
    android:id="@+id/map_goto_location" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:src="@drawable/goto_location" 
    android:layout_alignParentRight="true" 
    android:layout_alignParentTop="true" 
    android:id="@+id/goto_location" /> 
+2

Da Sie die 'MapView' zu einem' RelativeLayout' hinzufügen, fügen Sie einfach alle anderen UI-Elemente zu diesem Container hinzu. Stellen Sie sicher, dass Sie diese hinzufügen, nachdem Sie die MapView hinzugefügt haben, sodass sie oben angezeigt werden. Sie können entweder alle UI-Elemente im Code einrichten oder sie in XML deklarieren und sie mit einem 'LayoutInflater' inflatieren. Vergessen Sie auch nicht, sie nach dem Erstellen/Aufblasen hinzuzufügen. –

Antwort

4

Dank der Hauch von MH fand ich heraus, wie programmatisch wie unten einen Image zu meinen Code hinzuzufügen:

ImageButton goto_location = new ImageButton(this); 
    goto_location.setOnClickListener(new OnClickListener() 
    { 
     @Override 
     public void onClick(View v) { 
      // TODO Auto-generated method stub 
      showMylocation(); 
     }   
    }); 

    RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(40, 40); 
    params.rightMargin = 10; 
    params.topMargin = 10; 
    rl.addView(goto_location, params); 

Wenn mich jemand auf einige gute Tutorials/Beispiele zum Anpassen der Schaltfläche und zum programmatischen Hinzufügen von UI-Elementen hinweisen kann, wäre ich sehr glücklich.

+0

Es ist auch möglich, diese Schaltfläche in Ihrem Layout-XML zu definieren. Erstellen Sie einfach ein RelativeLayout und fügen Sie osmdroid MapView und Ihre Schaltfläche (n) hinzu. – scai