到现在为止,我已经在我的数据库中每 5 秒从我走过的路径中插入所有的纬度和经度集。
现在到达目的地后,我必须计算与纬度、经度集的距离。这不是计算两点之间的行进距离,而是从我的数据库中的经纬度集合中获取总行进距离。
我想到了一种通过获取两点之间的距离来计算总距离的方法 最后把它们加起来
还有比这更好的解决方案吗?请建议和帮助
已读 this SO post但不知道如何使用 Google Maps Distance Matrix API 获得总距离
///////将坐标插入数据库的服务。
private class MyReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context arg0, Intent arg1) {
String name = arg1.getAction();
if (name.equalsIgnoreCase("Location_Changed")) {
db.insertlatlong(new Latilongi(arg1.getStringExtra("latitude"),
arg1.getStringExtra("longitude"),currentDateandTime));
} else if (arg1.getAction().matches("android.location.PROVIDERS_CHANGED")) {
Toast.makeText(MapActivity.this, "in android.location.PROVIDERS_CHANGED",
Toast.LENGTH_SHORT).show();
}
}
}
最佳答案
你可以使用下面的方法来得到准确的结果
public double CalculationByDistance(LatLng StartP, LatLng EndP) {
int Radius = 6371;// radius of earth in Km
double lat1 = StartP.latitude;
double lat2 = EndP.latitude;
double lon1 = StartP.longitude;
double lon2 = EndP.longitude;
double dLat = Math.toRadians(lat2 - lat1);
double dLon = Math.toRadians(lon2 - lon1);
double a = Math.sin(dLat / 2) * Math.sin(dLat / 2)
+ Math.cos(Math.toRadians(lat1))
* Math.cos(Math.toRadians(lat2)) * Math.sin(dLon / 2)
* Math.sin(dLon / 2);
double c = 2 * Math.asin(Math.sqrt(a));
double valueResult = Radius * c;
double km = valueResult / 1;
DecimalFormat newFormat = new DecimalFormat("####");
int kmInDec = Integer.valueOf(newFormat.format(km));
double meter = valueResult % 1000;
int meterInDec = Integer.valueOf(newFormat.format(meter));
Log.i("Radius Value", "" + valueResult + " KM " + kmInDec
+ " Meter " + meterInDec);
return Radius * c;
}
关于android - 在 Android 中计算总行驶距离 Google Maps API V3,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40798778/