Ich hatte gerade einige Probleme mit der CameraUpdateFactory.Probleme beim Anzeigen eines Ortes und Zentrieren der Kamera
So eingebaut ich diesen Code in einem OnClickListener auf dem GpsButton auf einem Navigations Fragment:
if (ContextCompat.checkSelfPermission(mapFragment.getActivity(), android.Manifest.permission.ACCESS_FINE_LOCATION) ==
PackageManager.PERMISSION_GRANTED) {
Log.d("Permission checked", "checkSelfPermission passed with no errors");
map.setMyLocationEnabled(true);
Log.d("Permission checked", "Location Layer implementation successful");
} else {
//Request the Permission
ActivityCompat.requestPermissions(mapFragment.getActivity(), new String[]{
Manifest.permission.ACCESS_FINE_LOCATION}, 1);
}
Diese im Grunde die Lage ermöglicht als blauer Punkt auf der Karte nur angezeigt werden, wenn die GPS-Taste gedrückt wird. Das war bisher perfekt funktional.
Ich enthielt auch eine Methode, um die Kamera auf den aktuellen Standort zu verschieben:
public void locateMe() {
LocationManager locationManager = (LocationManager) getActivity().getSystemService(LOCATION_SERVICE); // Getting LocationManager object from System Service LOCATION_SERVICE
Criteria criteria = new Criteria();// Creating a criteria object to retrieve provider
String provider = locationManager.getBestProvider(criteria, true);// Getting the name of the best provider
if (ContextCompat.checkSelfPermission(mapFragment.getActivity(), android.Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
ActivityCompat.requestPermissions(mapFragment.getActivity(), new String[]{android.Manifest.permission.ACCESS_FINE_LOCATION}, 2);
}
Location location = locationManager.getLastKnownLocation(provider);
if (location != null) {
double latitude = location.getLatitude(); //Getting latitude of the current location
double longitude = location.getLongitude(); // Getting longitude of the current location
myPosition = new LatLng(latitude, longitude); // Creating a LatLng object for the current location
map.moveCamera(CameraUpdateFactory.newLatLngZoom(myPosition, CAMPUS_DEFAULT_ZOOM_LEVEL));//Camera Update method
}
}
Aus irgendeinem Grund ist dies ein Glücksspiel. Vor 3 Tagen war es auf einer Position, die nicht dort war, wo ich mich gerade befand, während es in den letzten 2 Tagen perfekt funktionierte. Kein Code wurde verändert. Könnte jemand bitte erklären, was vor sich geht? Irgendwelche Korrekturen oder Vorschläge würden geschätzt.
ich sehen, aber eines der Probleme scheint zu sein, ist es richtig meine Position wird dann zeigt es meine Lage, dass ich wieder eine Stunde gewesen sein. Ist das normal? – BustyChicksFTW
Es ist normal, dass der Standort manchmal korrekt ist und andere nicht. Wenn eine andere App vor kurzem keinen Standort angefordert hat, ist Ihr Standort wahrscheinlich veraltet und zu anderen Zeiten korrekt. Wenn Ihr Standort jedoch korrekt ist, sollte er normalerweise auch einige Minuten später korrekt sein. Sie sollten protokollieren, welcher Locationprovider verwendet wird, da Sie getBestLocationProvider verwenden, der bei jedem Aufruf dieser Methode möglicherweise einen anderen Locationprovider zurückgibt und eine höhere oder niedrigere Genauigkeit und damit einen anderen Speicherort aufweist. – Rockney
Gibt es eine Möglichkeit, die googlemap.setmyLocationEnabled Kameraverriegelung programmatisch zu sperren? – BustyChicksFTW