[英]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.