Я делаю своеобразное приложение для отслеживания. Мое приложение уже отслеживает мой путь и расстояние, но я не могу понять, что означают эти числа на расстоянии. Вот скриншоты (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;
}
Итак, вы получили расстояние в метрах, как указано в документации. Итак, вы можете пересечь километр, нырнув на 1000. И, наконец, можете отформатировать его в желаемый формат.
Вы можете пройти на расстояние, которое вы получили, используя метод ниже, и попробуйте, если это поможет.
String format(float distanceInMetres) {
float kms = distanceInMetres / 1000;
NumberFormat formatter = NumberFormat.getInstance();
return formatter.format(kms);
}
totalDistance + = lastLocation.distanceTo (currLocation); float kms = totalDistance / 1000; NumberFormat formatter = NumberFormat.getInstance (); textAutoUpdateLocation.setText ("Расстояние = " + км); return String.valueOf (formatter.format (кмс)); } return null; }
textAutoUpdateLocation.setText ("Расстояние = " + totalDistance); измените эту строку на: textAutoUpdateLocation.setText ("Distance = " + format (totalDistance));
Но он возвращает мне 6648,735. Не может быть такого расстояния.
double i2=i/60000; tv.setText(new DecimalFormat("##.##").format(i2));
выход:
5.81
Не знаю почему, но на первом onLocationChange у меня уже 110,87. Я все добавил, как вы сказали.
totalDistance + = lastLocation.distanceTo (currLocation); двойной км = totalDistance / 60000; textAutoUpdateLocation.setText (новый DecimalFormat ("##. ##"). формат (кмс)); } return totalDistance; }
И он считает расстояние, даже если я остаюсь на одном месте.
Подскажите, пожалуйста, куда мне это добавить и как это должно выглядеть?