Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/symfony/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 尝试对一个LatLng数组的距离求和_Android - Fatal编程技术网

Android 尝试对一个LatLng数组的距离求和

Android 尝试对一个LatLng数组的距离求和,android,Android,我试图求出一组板条之间的总距离,但很难做到。以下是到目前为止我得到的信息: private double sumDistance() { Location loc = new Location("distance provider"); double previousLatitude; double previousLongitude; float[] results = new float[1]; for (LatLng latLng : mMapLis

我试图求出一组板条之间的总距离,但很难做到。以下是到目前为止我得到的信息:

private double sumDistance() {
    Location loc = new Location("distance provider");
    double previousLatitude;
    double previousLongitude;
    float[] results = new float[1];
    for (LatLng latLng : mMapList) {
        previousLatitude = latLng.latitude;
        previousLongitude = latLng.longitude;
        loc.distanceBetween(previousLatitude, previousLongitude, latLng.latitude, latLng.longitude, results);
    }
    return 0;
}
问题在于,这两种方法的板条相同。有没有什么方法可以让我得到以前的Latling或一个更干净的方法来做到这一点,我没有想到?

double previousLatitude;
double previousLatitude;
double previousLongitude;
float[] results;
for (int i=0; i<mMapList.size(); ++i) {
    LatLng latLng = mMapList.get(i);
    if (i == 0) {
        // Previous weren't set yet, nothing to measure
        // Set them and skip loop
        previousLatitude = latLng.latitude;
        previousLongitude = latLng.longitude;
        continue;
    }

    // Measure previous with current
    loc.distanceBetween(previousLatitude, previousLongitude, latLng.latitude, latLng.longitude, results);
    // ~ Use the distance

    // Modify the previous ones
    previousLatitude = latLng.latitude;
    previousLongitude = latLng.longitude;
}
双经度; 浮动[]结果; 对于(int i=0;i
双前纬度;
双经度;
浮动[]结果;
对于(inti=0;i为什么不在计算完距离后分配“前一个变量”?类似的方法应该可以

private double sumDistance() {
    Location loc = new Location("distance provider");
    double previousLatitude = mMapList.get(0).latitude;
    double previousLongitude = mMapList.get(0).longitude;
    float[] results;
    for (int i=1;i<mMapList.size();i++) {
        loc.distanceBetween(previousLatitude, previousLongitude, mMapList.get(i).latitude, mMapList.get(i).longitude, results);
        previousLatitude = mMapList[i].latitude;
        previousLongitude = mMapList[i].longitude;
    }
    return 0;
}
private双相距(){
位置loc=新位置(“距离提供商”);
double previousLatitude=mMapList.get(0).latitude;
double-previousLongitude=mMapList.get(0.longitude);
浮动[]结果;
对于(inti=1;i为什么不在计算完距离后分配“前一个变量”?类似的方法应该可以

private double sumDistance() {
    Location loc = new Location("distance provider");
    double previousLatitude = mMapList.get(0).latitude;
    double previousLongitude = mMapList.get(0).longitude;
    float[] results;
    for (int i=1;i<mMapList.size();i++) {
        loc.distanceBetween(previousLatitude, previousLongitude, mMapList.get(i).latitude, mMapList.get(i).longitude, results);
        previousLatitude = mMapList[i].latitude;
        previousLongitude = mMapList[i].longitude;
    }
    return 0;
}
private双相距(){
位置loc=新位置(“距离提供商”);
double previousLatitude=mMapList.get(0).latitude;
double-previousLongitude=mMapList.get(0.longitude);
浮动[]结果;

对于(int i=1;i
-1-1
仍然是一个有效的坐标。使用
Double
代替原语值,检查它是否为null。@PedroOliveira或检查它是否是我在更新的答案中所做的第一次迭代。我花了一秒钟的时间才弄明白这段代码,这是完美的、伟大的代码。
-1-1
仍然是一个有效的c协调。使用
Double
代替原语值并检查它是否为空。@PedroOliveira或检查它是否是我在更新的答案中所做的第一次迭代。我花了一秒钟的时间来了解这段代码,这是完美的、伟大的代码。也是伟大的代码,两者都完全按照他们的要求执行。:)这也是一个很棒的代码,它们都能完成它们应该做的事情。:)