Google Maps als "Overlay" verwenden

  • 3 Antworten
  • Letztes Antwortdatum
R

Rhododendron

Fortgeschrittenes Mitglied
26
Hallo zusammen,

ich hänge gerade an einem kleinen Problem.
Ich hab ne App, die eine SurfaceView verwendet und einfach das Kamerabild anzeigt. Das Ganze wird als Vollbild angezeigt und ich möchte jetzt im Eck sozusagen eine Minimap haben (wie man es u.A. von vielen Spielen kennt), die die Umgebung anzeigt und den User als kleinen Pfeil anzeigt inkl. Richtung in die man schaut.
Die Richtung selbst hab ich schon über die Sensoren, was mir fehlt ist diese Minimap.
Kann ich irgendwie eine MapView oder was ähnliches (was die Maps API v2 halt so hergibt ;) ) über mein Kamera-Bild legen?

Hier mal ein Bild was ich mir so vorgestellt habe:


Grüße,
rhod
 
Ok, ich bin jetzt immerhin etwas weiter.

Hab vergessen dass man mit RelativeLayout sowas ja kann :D

Allerdings ist mein fragment mit der Map schwarz. Nur die +/- Buttons werden angezeigt.

Mein Layout sieht so aus:
Code:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent" >
        <FrameLayout
            android:id="@+id/preview"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:src="@drawable/ic_launcher" />
        <fragment
            android:id="@+id/map"
            android:layout_width="200dp"
            android:layout_height="200dp"
            class="com.google.android.gms.maps.MapFragment" />
</RelativeLayout>

und meine Activity gekürzt so:
Code:
@Override
protected void onCreate(Bundle savedInstanceState){
    super.onCreate(savedInstanceState);
    this.requestWindowFeature(Window.FEATURE_NO_TITLE);
    getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
    getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
    setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);

    Display display = getWindowManager().getDefaultDisplay();
    size = new Point();
    display.getSize(size);
    setContentView(R.layout.activity_main);
    LatLng position = new LatLng(dst.getLatitude(), dst.getLongitude());
    GoogleMap map = ((MapFragment) getFragmentManager().findFragmentById(R.id.map)).getMap();
    map.addMarker(new MarkerOptions().position(position).title("Marker"));
    map.moveCamera(CameraUpdateFactory.newLatLngZoom(position, 10));

    camera = getCameraInstance();
    Parameters p = camera.getParameters();
    Size s = getBestPreviewSize(size.x, size.y);
    p.setPreviewSize(s.width, s.height);
    camera.setParameters(p);
    preview = new Preview(this, camera);
    ((FrameLayout) findViewById(R.id.preview)).addView(preview);
}

die Preview-Klasse ist mehr oder weniger aus nem Tutorial übernommen:
Code:
class Preview extends SurfaceView implements SurfaceHolder.Callback {
    SurfaceHolder mHolder;
    Context context;
    Camera camera;

    public Preview(Context context, Camera camera) {
        super(context);
        this.context = context;
        this.camera = camera;
        mHolder = getHolder();
        mHolder.addCallback(this);
    }
    @Override
    public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) {
        camera.stopPreview();
        try {
            camera.setPreviewDisplay(holder);
            camera.startPreview();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
    @Override
    public void surfaceCreated(SurfaceHolder holder) {
        try {
            camera.setPreviewDisplay(holder);
            camera.startPreview();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
    @Override
    public void surfaceDestroyed(SurfaceHolder holder) {
        //nothing to do here
    }
}

Jemand ne Idee warum die Map schwarz bleibt? Die +/- Buttons funktionieren theoretisch, aber man sieht halt nix. Daher geh ich mal davon aus, dass die Map nicht irgendwie hinter der SurfaceView liegt.
 
Bei meinem alten handy hab ich auch manchmal schwarze maps gehabt, pprobier die app mal auf einem anderen gerät.

Gesendet von meinem LG-P880 mit der Android-Hilfe.de App
 
Danke für die Antwort.

Die Map ist nich schwarz, sondern komplett durchsichtig. Nur die +/- Buttons werden angezeigt. Alles komisch.

Ich werds aber mal auf meinem alten Handy versuchen und schauen ob es tut Edit: Hab die Lösung. Man muss einfach die 2 Views andersrum in das Layout packen. Ich dachte dass das erste Element im RelativeLayout als unterstes gezeichnet wird. Ist aber genau andersrum. Wenn ich also das Fragment über meiner SurfaceView will, muss das fragment vor der SurfaceView im Layout auftauchen. Danke trotzdem für die Hilfe
 
Zuletzt bearbeitet:

Ähnliche Themen

L
Antworten
2
Aufrufe
468
Lexub
L
Zurück
Oben Unten