Метод Location.distanceBetween возвращает различное расстояние на уровне 28 Api (круговая диаграмма) в том же местоположении - PullRequest
0 голосов
/ 04 марта 2019

В настоящее время я использую плавное расположение Android для выборки lat, пока мой код работает отлично ниже уровня API 27, но мой код дает мне неправильное местоположение, когда уровень Api выше 27 ...

private void getLocation() {
        if (isContinue) {
            mFusedLocationClient.requestLocationUpdates(locationRequest, locationCallback, null);
        } else {
            mFusedLocationClient.getLastLocation().addOnSuccessListener(MainActivity.this, location -> {
                if (location != null) {
                    wayLatitude = location.getLatitude();
                    wayLongitude = location.getLongitude();
                    Log.e("latlong++",String.format(Locale.US, "%s - %s", wayLatitude, wayLongitude));
                    checkLocationRange(wayLatitude,wayLongitude);
                    getCompleteAddressString(wayLatitude,wayLongitude);
                 // txtLocation.setText(String.format(Locale.US, "%s - %s", wayLatitude, wayLongitude));
                } else {
                    mFusedLocationClient.requestLocationUpdates(locationRequest, locationCallback, null);
                }
            });
        }
}

код для расчета расстояния между двумя локациями

 public void checkLocationRange(double endLatitude,double endLongitude)
{
    Location.distanceBetween(28.6301796 ,77.3789867,endLatitude,endLongitude,dist);
    float distanceInMeters = dist[0];
    boolean isWithin100meter = distanceInMeters < 100;
    Toast.makeText(getApplicationContext(), "Your Distance in meter="+distanceInMeters, Toast.LENGTH_LONG).show();
    Log.e("isWithin100m", String.valueOf(isWithin100meter));
    Log.e("distanceInMeters", String.valueOf(distanceInMeters));

    if(isWithin100meter==false){
       // rangestatus = false;
        locationRangeDialog();
     /* Toast.makeText(getApplicationContext(), "Out of range",
              Toast.LENGTH_LONG).show();*/
    }
    else
    {
        rangestatus=true;
    }
}
...