J'ai mis en place ce code pour obtenir la mise à jour actuelle de la position tous les 10 pas mais je ne suis pas en train de bouger 10 pas ou plus, j'ai une question réaliste définir une distance minimale de 10 pas?Comment mettre à jour la position actuelle toutes les 10 étapes déplacées
Chaque fois que mon code s'exécute, je reçois différents chiffres en décimales et si je compare ces chiffres, je reçois chaque fois que mon application fonctionne avec l'emplacement actuel sur le site google maps, ses 400 mètres environ loin de mon emplacement actuel, pourquoi cela se passe-t-il?
private FusedLocationProviderClient mFusedLocationClient;
private GoogleApiClient mGoogleApiClient;
private GoogleMap mMap;
private TextView tvLat;
private TextView tvLng;
Map<String, Double> latlng = new HashMap<>();
DatabaseReference data;
private double lat;
private double lng;
CameraPosition CurrentLocation;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
SingletonConnectClass instence = SingletonConnectClass.getInstance();
data = instence.firebaseSetup();
setContentView(R.layout.activity_maps);
initView();
setUpMapIfNeeded();
}
private void setUpMapIfNeeded() {
mFusedLocationClient
= LocationServices.getFusedLocationProviderClient(this);
mapFragment.getMapAsync(this);
}
@Override
public void onMapReady(GoogleMap googleMap) {
mMap = googleMap;
mMap.setMyLocationEnabled(true);
mMap.setMapType(GoogleMap.MAP_TYPE_TERRAIN);
getCurrentLocation();
buildClient();
}
private void getCurrentLocation(){
mFusedLocationClient.getLastLocation()
.addOnSuccessListener(this, new OnSuccessListener<Location>() {
@Override
public void onSuccess(final Location location) {
CurrentLocation = new CameraPosition.Builder().target(new
LatLng(location.getLatitude(),
location.getLongitude()))
.zoom(15.5f)
.bearing(0)
.tilt(25)
.build();
//changed camera position to current location and added marker there
}
Voici le code pour obtenir la mise à jour de l'emplacement actuel si je déménage 10 étapes après la connexion à jouer dans les services de rappel onConnected
public void onConnected(Bundle bundle) {
mFusedLocationClient.requestLocationUpdates(requestLocation(),
new LocationCallback() {
@Override
public void onLocationResult(LocationResult locationResult) {
for (final Location location : locationResult.getLocations()) {
//not getting changing current lat lng if i move 10 steps
tvLat.setText(Double.toString(location.getLatitude()));
tvLng.setText(Double.toString(location.getLongitude()));
lat = location.getLatitude();
lng = location.getLongitude();
//as result not camera position is not changed
changeCameraPosition(CameraUpdateFactory.newLatLngZoom(
new LatLng(location.getLatitude(), location.getLong)
}}, Looper.myLooper());
ce que je suis absent dans mon code? onLocationChanged? dois-je mettre en œuvre manuellement onLocationChanged? – blackHawk
alors qu'est-ce que requestLocationUpdates fait? – blackHawk