0

我正在尝试获取从过去startposition/位置到移动当前currentposition/位置的距离(以米为单位)。

我确实有currentposition哪个工作正常。但是当我使用开始按钮启动应用程序时,我无法得到startposition应该修复和保存的内容。

其实/location 和/location 也是一样LatLng的。startpositioncurrentposition

我试图在开始时设置一个标记。但我不知道如何使用它来代替startposition测量距离。

 mLocationCallback = new LocationCallback() {
    @Override
    public void onLocationResult(LocationResult locationResult) {
    super.onLocationResult(locationResult);

   if (flag == 1) {
    mGoogleMap.moveCamera(CameraUpdateFactory.newLatLng(
    new LatLng(locationResult.getLastLocation().
    getLatitude()
    , locationResult.getLastLocation().
     getLongitude())));
     mGoogleMap.moveCamera(CameraUpdateFactory.
    newLatLngZoom(new LatLng(locationResult.
    getLastLocation().getLatitude()
   , locationResult.getLastLocation().
    getLongitude()), 19));
   mGpsCurrentPosition = new LatLng(locationResult.
   getLastLocation().getLatitude()
   , locationResult.getLastLocation().
   getLongitude());
 mGpsStartPosition = new LatLng(locationResult.
  getLastLocation().getLatitude()
 , locationResult.getLastLocation().
   getLongitude());
    }
   updateGps();
   }
private void getLaufDistanz() {
    Location laufStartPunkt = new Location("Start");
    laufStartPunkt.setLatitude(mGpsStartPosition.latitude);
    laufStartPunkt.setLongitude(mGpsCurrentPosition.longitude);
    Location laufEndPunkt = new Location("Ende");
    laufEndPunkt.setLatitude(mGpsCurrentPosition.latitude);
    laufEndPunkt.setLongitude(mGpsCurrentPosition.longitude);
    float laufDistanzInMeter = laufStartPunkt.distanceTo
            (laufEndPunkt)/1000;
    mTvMinProKm.setText("" + String.valueOf(laufDistanzInMeter));
}

我需要一种方法来设置startpositionLatLng米为单位的距离。

4

1 回答 1

0

试试 Haversine 公式(见下面的链接)。假设球形地球,它将为您提供两点之间的大圆距离。

https://en.wikipedia.org/wiki/Haversine_formula

于 2019-10-07T07:08:43.563 回答