Как измерить расстояние с помощью distanceTo в километрах

Я делаю своеобразное приложение для отслеживания. Мое приложение уже отслеживает мой путь и расстояние, но я не могу понять, что означают эти числа на расстоянии. Вот скриншоты (1, 2, 3). Я хочу получить расстояние в километрах в этом формате ФОРМАТ РАССТОЯНИЯ, как на картинке (пример: 1,11 км). Пожалуйста, помоги мне. Я новичок в разработке Android, не могли бы вы объяснить мне, как это сделать.

Заранее спасибо.

ВОТ МОЙ КОД

@Override
public void onLocationChanged(Location location) {
    if (location != null) {
        if (currentLocationMarker != null){
            currentLocationMarker.remove();
        }
        LatLng latLng = new LatLng(location.getLatitude(), location.getLongitude());
        MarkerOptions marker = new MarkerOptions();
        marker.position(latLng);
        currentLocationMarker=mMap.addMarker(marker);
        polylineOptions = new PolylineOptions();
        polylineOptions.color(Color.RED);
        polylineOptions.width(5);
        arrayPoints.add(latLng);
        polylineOptions.addAll(arrayPoints);
        mMap.addPolyline(polylineOptions);
        calculateMiles();
    }
}
protected float calculateMiles() {
    float totalDistance = 0;

    for(int i = 1; i < polylineOptions.getPoints().size(); i++) {
        Location currLocation = new Location("this");
        currLocation.setLatitude(polylineOptions.getPoints().get(i).latitude);
        currLocation.setLongitude(polylineOptions.getPoints().get(i).longitude);
        Location lastLocation = new Location("this");
        currLocation.setLatitude(polylineOptions.getPoints().get(i-1).latitude);
        currLocation.setLongitude(polylineOptions.getPoints().get(i-1).longitude);
        totalDistance += lastLocation.distanceTo(currLocation);
    }


    textAutoUpdateLocation.setText("Distance = " + totalDistance);
    return totalDistance;
}
0
0
421
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Итак, вы получили расстояние в метрах, как указано в документации. Итак, вы можете пересечь километр, нырнув на 1000. И, наконец, можете отформатировать его в желаемый формат.

Вы можете пройти на расстояние, которое вы получили, используя метод ниже, и попробуйте, если это поможет.

   String format(float distanceInMetres) {
        float kms = distanceInMetres / 1000;
        NumberFormat formatter = NumberFormat.getInstance();
        return formatter.format(kms);
   }

Подскажите, пожалуйста, куда мне это добавить и как это должно выглядеть?

JAGUAR 14.08.2018 18:36

totalDistance + = lastLocation.distanceTo (currLocation); float kms = totalDistance / 1000; NumberFormat formatter = NumberFormat.getInstance (); textAutoUpdateLocation.setText ("Расстояние = " + км); return String.valueOf (formatter.format (кмс)); } return null; }

JAGUAR 14.08.2018 18:36

textAutoUpdateLocation.setText ("Расстояние = " + totalDistance); измените эту строку на: textAutoUpdateLocation.setText ("Distance = " + format (totalDistance));

Anmol 14.08.2018 18:37

Но он возвращает мне 6648,735. Не может быть такого расстояния.

JAGUAR 14.08.2018 18:37
Ответ принят как подходящий
double i2=i/60000;  tv.setText(new DecimalFormat("##.##").format(i2));

выход:

5.81

Не знаю почему, но на первом onLocationChange у меня уже 110,87. Я все добавил, как вы сказали.

JAGUAR 14.08.2018 19:17

totalDistance + = lastLocation.distanceTo (currLocation); двойной км = totalDistance / 60000; textAutoUpdateLocation.setText (новый DecimalFormat ("##. ##"). формат (кмс)); } return totalDistance; }

JAGUAR 14.08.2018 19:18

И он считает расстояние, даже если я остаюсь на одном месте.

JAGUAR 14.08.2018 19:20

Другие вопросы по теме