How to get breiten-und Längengrad der aktuellen Position in Android?
Habe ich ein Fragment, in dem ich zeigen möchte, aktuellen Standort der Benutzer(Gerät). Ich benutze Google-Karte Android API v2. Wie erhalten Sie die aktuellen Längen-und Breitengrad Gerät?
Hier unten sehen Sie code, die ich verwendet. Leider funktioniert die app falsche, nicht wie ich erwartet hatte. Es zeigen nur anzeigen, aber es gibt keine Markierung, die ich eingestellt habe und keine aktuellen Standort. Kann das jemand prüfen und korrigieren? Was mache ich falsch? Vielen Dank für jede Hilfe!!!
EDIT:
MainFragment.java
public class MainFragment extends Fragment{
private SupportMapFragment mSupportMapFragment;
private GoogleMap mGoogleMap;
public BroadcastReceiver receiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
Bundle extras = intent.getExtras();
LatLng temp = new LatLng(extras.getDouble("Latitude"),extras.getDouble("Longitude"));
}
};
@Override
public void onActivityCreated(@Nullable Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
FragmentManager mFragmentManager = getChildFragmentManager();
mSupportMapFragment = (SupportMapFragment) mFragmentManager.findFragmentById(R.id.map_container);
if (mSupportMapFragment == null) {
mSupportMapFragment = SupportMapFragment.newInstance();
mFragmentManager.beginTransaction().replace(R.id.map_container, mSupportMapFragment).commit();
}
//Broadcast/Filter
IntentFilter filter = new IntentFilter();
filter.addAction(LocationService.BROADCAST_ACTION);
getActivity().registerReceiver(receiver, filter);
}
@Override
public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
//Start service
getActivity().startService(new Intent(getActivity(),LocationService.class));
}
@Override
public void onResume(){
receiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
Log.d(TAG, "BroadcastReceiver works!");
Bundle extras = intent.getExtras();
final LatLng temp = new LatLng(extras.getDouble("Latitude"),extras.getDouble("Longitude"));
if (mGoogleMap != null) {
mGoogleMap = mSupportMapFragment.getMap();
mGoogleMap.addMarker(new MarkerOptions().position(temp).title("Marker").snippet("Location"));
}
try {
CameraUpdate center = CameraUpdateFactory.newLatLng(temp);
CameraUpdate zoom = CameraUpdateFactory.zoomTo(15f);
mGoogleMap.moveCamera(center);
mGoogleMap.animateCamera(zoom);
}catch (NumberFormatException e) {
//Some code here for exception
}
}
};
}
@Override
public void onDetach() {
super.onDetach();
try {
Field childFragmentManager = Fragment.class.getDeclaredField("mChildFragmentManager");
childFragmentManager.setAccessible(true);
childFragmentManager.set(this, null);
} catch (NoSuchFieldException e) {
throw new RuntimeException(e);
} catch (IllegalAccessException e) {
throw new RuntimeException(e);
}
}
}
fragment_main.xml
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/map_container">
<!-- The map fragments will go here -->
</RelativeLayout>
Hinzufügen Sie können Ihre eigenen Fehler-log?
Getestet habe ich es im real-Gerät. Getestet habe ich mit latitude und longitude Werte, die ich gerade schrieb und zome es also in diesem Fall funktionierte es. Ich habe auch versucht zu testen im emulator die Google-APIs gab es aber Fehler mit dem Speicher.
Hallo @Muthu ich bearbeitete meinen post. Jetzt muss ich nur sehen die Karte und die, die es nicht zeigen, Markierung und aktuelle Position. Bitte können Sie überprüfen, code der post wieder und sagen was falsch? Vielen Dank und einen schönen Tag!
wenn du möchtest, könnte ich mein Anteil an der Arbeit Ort-service-code.
Ich denke, es wird nützlich sein für mich, wenn du mir dein Beispiel @Muthu.
Getestet habe ich es im real-Gerät. Getestet habe ich mit latitude und longitude Werte, die ich gerade schrieb und zome es also in diesem Fall funktionierte es. Ich habe auch versucht zu testen im emulator die Google-APIs gab es aber Fehler mit dem Speicher.
Hallo @Muthu ich bearbeitete meinen post. Jetzt muss ich nur sehen die Karte und die, die es nicht zeigen, Markierung und aktuelle Position. Bitte können Sie überprüfen, code der post wieder und sagen was falsch? Vielen Dank und einen schönen Tag!
wenn du möchtest, könnte ich mein Anteil an der Arbeit Ort-service-code.
Ich denke, es wird nützlich sein für mich, wenn du mir dein Beispiel @Muthu.
InformationsquelleAutor Nurzhan Nogerbek | 2015-02-08
Du musst angemeldet sein, um einen Kommentar abzugeben.
Diese Informationen und mehr finden Sie in der Location-Objekt, dass Ihre app abrufen kann, von den fused location provider: https://developer.android.com/training/location/retrieve-current.html.
Hallo Marian Paździoch! Ich bearbeitet meine post mit Hilfe der Informationen in dieser Quelle, die du mir gegeben hast. Jetzt muss ich nur sehen die Karte und die, die es nicht zeigen, Markierung und aktuelle Position. Bitte können Sie überprüfen, code der post wieder und sagen was falsch? Vielen Dank und einen schönen Tag!
InformationsquelleAutor Marian Paździoch
Können Sie versuchen, diese aus meinem derzeitigen Projekt -
Mit Standort-manager, um Letzte bekannte Position:
Ich rufe diese Methode auf, um den letzten Standort von meinem Handy.
InformationsquelleAutor user3152131
Dies ist meine aktuelle code ist ein Dienst zum senden per Broadcast.
Müssen Sie auf Dienst starten, indem Sie folgenden code
erhalten Broadcast -
Registrieren Broadcast-Recever.
Verwendung von service-verbraucht Energie-stop-service, wenn nicht in Gebrauch.
Update auf Ihrem Code
Einer Sache Können Sie sich anmelden die lat&lang in BradCast recever? wenn Ihr immer lat & lang können wir einen Weg finden, sonst das bedeutet, dass der service nicht ausgeführt wird, müssen Sie den Dienst zu starten.
Hallo Muthu! Habe ich auch gedacht. Ist es möglich, zu entfernen Absicht mLocationService= new Intent(this,LocationService.class); startService(mLocationService); Fragment verursachen jetzt seinen meiner MainActivity...
go ahead versuchen Sie es.
kein Glück?
InformationsquelleAutor Muthu
Beachten Sie, dass
getLastKnownLocation
null zurückgeben kann, wenn keine kürzlich erworbene Position vorhanden ist. Sie sollten überprüfen Sie das Ergebnis von dieser Methode aufrufen, bevor Sie versuchen, zu extrahieren, die Breite/Länge. Offensichtlich, wenn das Ergebnis ist null, anfordern, entweder die Breite oder Länge resultieren in einer NullPointerException.Hallo @stkent ich bearbeitete meinen post mit Hilfe der Informationen in dieser Quelle, die du mir gegeben hast. Jetzt muss ich nur sehen die Karte und die, die es nicht zeigen, Markierung und aktuelle Position. Bitte können Sie überprüfen, code der post wieder und sagen was falsch? Vielen Dank und einen schönen Tag!
Diese Zeile ist problematisch:
if(mLocation !=null & mGoogleMap == null){
. Sie wollen nicht, um zu überprüfen, dassmGoogleMap
null ist, jedes einzelne mal, wenn Sie erhalten ein location update. Brechen Sie diese in zwei separate if-Anweisungen (mit dem check aufmGoogleMap
ersten). Macht das Sinn?So wie es zu lösen ist? Haben Sie Ideen, @stkent ?
Yep, wie ich sagte, Sie sollten überprüfen werden, mGoogleMap für null getrennt von der Prüfung mLocation für null.
InformationsquelleAutor stkent