gpt4 book ai didi

java - 计算 2 个列表中两个坐标之间的距离

转载 作者:行者123 更新时间:2023-12-01 13:33:50 26 4
gpt4 key购买 nike

大家好,我有一个问题。

我在我的应用程序中实现了 Google map ,并将获得的坐标保存到 SQL Lite 数据库中(我还有一个“开始”和“停止”按钮)。现在我想计算起点和终点之间的距离。我从两个列表中获取坐标(一个用于纬度,一个用于经度),现在我的问题是如何迭代列表并从中获取坐标。我还需要一次读出 2 个坐标,因为我需要开始和结束坐标,并且我需要这样做直到列表完成。

所以我希望有人知道这个问题的解决方案,这是我的代码:

public double calculateKM() {
allRoute = (ArrayList<Route>) db.getAllRouteByID(drive_id);
for (Route route : allRoute) {
Log.d("Car: ", route.getDate());
lat.add(route.getLatitude());//here I get the coordiantes out of the database
lon.add(route.getLongitude());

for (int i = 0; i < lat.size(); i++) {//and this is where I cant find a solution.
String element = lat.get(i);
double value = Double.parseDouble(element);



}
calculateDistance(...);


}
}

private double calculateDistance(double fromLong, double fromLat,
double toLong, double toLat) {

double d2r = Math.PI / 180;
double dLong = (toLong - fromLong) * d2r;
double dLat = (toLat - fromLat) * d2r;
double a = Math.pow(Math.sin(dLat / 2.0), 2) + Math.cos(fromLat * d2r)
* Math.cos(toLat * d2r) * Math.pow(Math.sin(dLong / 2.0), 2);
double c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));
double d = 6367000 * c;
return Math.round(d);

}

最佳答案

正如评论中所说,我同意你根本不应该分开经纬度。您可以为它们创建一个存储类:

class Position{
public final double lat;
public final double lon;

public Position(double lat, double lon){
this.lat = lat;
this.lon = lon;
}
}

并将其存储在列表中:

List<Position> positions = new ArrayList<Position>();
positions.add( new Position( lat, lon) );

并迭代它

for(int i=0; i<positions.size()-1; i++){
Position a = positions.get(i);
Position b = positions.get(i+1);

[.....]
}

如果您想坚持使用双列表,您可以轻松地迭代它们:

for(int i=0; i<lat.size(); i++){
String latStr = lat.get(i);
String lonStr = lon.get(i);

[....]
}

但再次强调,请不要这样做。

关于java - 计算 2 个列表中两个坐标之间的距离,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21403992/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com