簡體   English   中英

在行駛時計算android中兩個位置之間的距離

[英]Calculating distance between two locations in android while driving

我已經開發了類似uber的應用,但是由於從接送地點到旅程完成的地點之間的距離不正確,我在計算正確的票價時遇到了問題。 我所做和正在做的事情:

第一種方法

我正在這樣獲得駕駛員當前位置(行程開始時保存位置)和終點位置(行程完成位置)之間的距離。

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.8公里。

請建議我做一個更好的方法或任何有效的源代碼示例。 所以我可以解決這個問題。

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);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM