2016-07-19 3 views
-2

Ich arbeite an Android App verwendet Karte für die Verfolgung von Benutzerstandort. Ich möchte meine aktuelle Standortmarkierung auf dem Bildschirm korrigieren. In meiner aktuellen Arbeitsdemo, wenn ich den aktuellen Standortmarker rotiere, blende ich unter dem Bildschirm aus oder bewege mich zu einer anderen Position. Wie soll ich das erreichen? Danke im Voraus.Fix Marker Position statt Karte Rotation/Peilung (Orientierung) wie Pokemon gehen

+1

Können Sie bitte Code angeben, mit dem Sie mit Marker arbeiten und wo Sie die Karte initialisieren? –

+0

Der Code ist der gleiche wir schreiben immer für das Hinzufügen von Marker und animierende Kameraposition. Ich kann Ihnen ein Beispiel dafür geben, was ich suche, ist, dass Sie ingress Spiel dort gespielt haben, bleiben Marker auf derselben Position, aber Sie können Karte um es drehen. – akki101

+1

Bitte überprüfen Sie diese Richtlinien für das Stellen guter Fragen: http://StackOverflow.com/Help/Mcve – SunSparc

Antwort

0

Wenn ich dich richtig verstanden habe, dann musst du etwas hacken. Entschuldigung, Sie haben mir keinen Code zur Verfügung gestellt, daher werde ich Sie wahrscheinlich nicht zur genauen Lösung auffordern. Aber ich kann die Idee erklären.

Die Idee, dass Sie zwei Ansichten in FrameLayout platzieren: MapView und View (Entschuldigung für Pseudo-Code).

<FrameLayout 
    android:layout_width="match_parent" 
    android:layout_height="match_parent"> 

    <MapView 
     android:id="@+id/map" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent"/> 

    <View 
     android:id="@+id/touch_zone" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:clickable="true"/> 
</FrameLayout> 

So können Sie verhindern, auf der Karte zu berühren. Dann müssen Sie Ihre Karte Spur auf Ihrer Position machen

Zum Beispiel können Sie Ereignisse erfassen, wenn Sie Änderungen positionieren und googleMap.animateCamera(...) aufrufen.

Dann für touch_zone Ansicht müssen Sie setOnTouchListener mit Ihrer anonymen Klasse aufrufen, die Berührung zu unserer oberen Ansicht behandeln wird. In dieser Methode werden Sie die Logik des Abrufens von Koordinaten auf dem Bildschirm implementieren, indem Sie die Projektion auf Koordinaten auf der Karte durchführen und erkennen, wo Sie Ihre Karte drehen müssen.

+0

Ich habe keinen Code außer Marker auf der Karte zu schreiben, bcoz ich weiß nicht, wie es geht. Lass mich an deiner Lösung arbeiten. Vielen Dank. – akki101

0

Nun, wenn Sie die Markierung wollen in die Mitte des Bildschirms, um immer wieder zu kommen, können Sie verwenden:

CameraPosition cameraPosition = new CameraPosition.Builder() 
      .target(latLng).zoom(zoom).build(); 

googleMap.animateCamera(CameraUpdateFactory 
      .newCameraPosition(cameraPosition)); 

hier hält latLng die Breite und die Länge des Markers, und jedes Mal die Position Wenn Sie möchten, dass der Marker in die Mitte zurückkehrt, können Sie den obigen Code verwenden.

Außerdem können Sie die Karte verhindern ziehbar ist mit dem folgenden Code:

googleMap.getUiSettings().setScrollGesturesEnabled(false); 

Dies wird die Karte deaktivieren, sich zu bewegen, aber Rotation, Schwenken und Zoomen funktioniert.

+0

Ich kann Ihnen ein Beispiel geben von dem, was ich suche, ist, dass Sie ingress Spiel gespielt haben oder pokemon gehen dort Markierung bleiben auf derselben Position aber Sie können die Karte um sie herum drehen. – akki101

+0

Ich habe keines der Spiele gespielt, aber ich habe Leute gesehen, die sie spielen. Ich habe die Antwort mit dem aktualisiert, was ich denke, was du willst. –

Verwandte Themen