首页 > 解决方案 > 优化坐标距离计算

问题描述

大家好,我需要帮助优化我的距离计算。一段时间后,可能是几分钟,可能是几个小时,这取决于手机,它会减慢速度,应用程序几乎无法工作,我已将其缩小到距离计算范围,但我不知道如何解决。我将应用程序中的所有其他十进制数字转换为浮点数,这有点帮助,但我需要双倍的距离。这是代码

`double getTripDistance(列出顶点){

    double totalDistance = 0;

    for (int i = 0; i < vertices.size() - 1; i++) {
        Location tLoc1 = new Location("");
        Location tLoc2 = new Location("");

        tLoc1.setLatitude(vertices.get(i).latitude);
        tLoc1.setLongitude(vertices.get(i).longitude);

        tLoc2.setLatitude(vertices.get(i + 1).latitude);
        tLoc2.setLongitude(vertices.get(i + 1).longitude);

        totalDistance += tLoc1.distanceTo(tLoc2);
    }
    return totalDistance;
}`

标签: javaandroidperformanceoptimization

解决方案


您不应该List vertices每次都根据该列表从头开始计算距离。相反,您应该跟踪overallDistanceand ,一旦将新条目vertex添加到vertices列表中,您将使用该条目和列表中的前一个条目,计算这两者之间的距离并将结果添加到已经存在的overallDistance.

伪代码:

class Trip {
    List vertices;
    double distance;

    addVertex(vertex) {
        last = vertices.getLast()
        vertices.add(vertex)
        if last {
             distance += distanceBetween(vertex, last)
        }
    }

    getTripDistance() {
        return distance;
    }
}

推荐阅读