Je viens d'avoir des problèmes pour des raisons inconnues avec CameraUpdateFactory.Problèmes d'affichage d'un emplacement et centrage de l'appareil photo
ai donc incorporé ce code dans un onclickListener sur le GpsButton sur un fragment de navigation:
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);
}
Cela permet essentiellement l'emplacement à afficher comme un point bleu sur la carte uniquement lorsque le bouton GPS enfoncé. Cela a été parfaitement fonctionnel jusqu'à présent.
J'ai aussi incorporé une méthode pour déplacer la caméra à mon emplacement actuel:
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
}
}
Pour une raison quelconque, cela est frappé ou manquer. Il y a 3 jours, il était verrouillé sur une position qui n'était pas où je me trouvais actuellement alors que pour les 2 derniers jours cela a fonctionné parfaitement. Aucun code n'a été modifié. Quelqu'un pourrait-il expliquer ce qui se passe? Toutes les corrections ou suggestions seraient appréciées.
Je vois, mais l'un des problèmes semble être que, il obtient ma position correctement, puis il montre mon emplacement que je suis une heure en arrière. Est-ce normal? – BustyChicksFTW
Il est normal que l'emplacement soit parfois correct et d'autres fois non. Si une autre application n'a pas demandé d'emplacement récemment, votre position sera probablement obsolète et d'autres fois, elle sera correcte. Si toutefois votre emplacement est correct, il devrait normalement être correct aussi bien quelques minutes plus tard. Vous devez vous connecter à quel emplacement LocationProvider est utilisé, car vous utilisez getBestLocationProvider, qui peut renvoyer un fournisseur d'emplacement différent chaque fois que vous appelez cette méthode, et qui peut avoir une précision plus élevée ou plus faible et, par conséquent, un emplacement différent. – Rockney
Existe-t-il un moyen de verrouiller la caméra sur googlemap.setmyLocationEnabled? – BustyChicksFTW