驾驶时计算机器人中两个位置之间的距离

时间:2016-07-12 17:11:04

标签: android distance google-direction

我开发了一款类似超级的应用程序,但由于从接送位置到行程完成位置的距离不正确,我在计算正确的票价方面遇到了问题。 我做了什么和做了什么:

第一种方法

我在驾驶员的当前位置(行程开始时保存位置)和结束位置(行程已完成)之间保持距离 像这样。

distanceInMeters = locationChanged.getmCurrentlocation().distanceTo(loc_pick_up);

但是这段代码存在问题。如果乘客上车位置(行程开始)和下车位置(行程已完成)相同距离为零。

第二种方法

现在我每分钟都在调用一种方法。这是第一次执行时。计算拾取位置(从行程开始)到当前位置(1分钟后的位置)之间的距离,并保存变量的差异。并且当前位置变为拾取位置并且再次执行方法时。它计算拾取位置和当前位置之间的距离(在1分钟之前和之后的位置之间),并将结果添加到已保存的距离中。

private void locationDistanceHandler() {

    handlerLocation = new Handler();
    runnableCode = new Runnable() {
        @Override
        public void run() {

            Location loc_pick_up = new Location("");
            if (!pick_up_value_used) {
                loc_pick_up.setLatitude(pickUpLatLng.latitude);
                loc_pick_up.setLongitude(pickUpLatLng.longitude);
                locationChanged.setmPickUpLocation(locationChanged.getmCurrentlocation());
                pick_up_value_used = true;
            } else {
                loc_pick_up.setLatitude(locationChanged.getmPickUpLocation().getLatitude());
                loc_pick_up.setLongitude(locationChanged.getmPickUpLocation().getLongitude());
            }
            Log.d(Constants.LOG, "handle location called:" + distanceInMeters);
            distanceInMeters = distanceInMeters + locationChanged.getmCurrentlocation().distanceTo(loc_pick_up);
            handlerLocation.postDelayed(this, 60000);
        }
    };
    handlerLocation.postDelayed(runnableCode, 60000);
}

但这不准确。今天我在18分钟内从办公室走了20公里到家。但这种方法计算的距离为6.8km。

请建议我更好的方法来执行此操作或任何有效的源代码示例。所以我可以解决这个问题。

1 个答案:

答案 0 :(得分:0)

float[] results=new float[5];
                loc_pick_up.distanceBetween(startLatitude,startLongitude, endLatitude, endLongitude,results);
                String calculatedDistance=results[0];
                System.out.println("Distance between point A and point B are: " + calulcatedDistance);