java - 优化坐标距离计算
问题描述
大家好,我需要帮助优化我的距离计算。一段时间后,可能是几分钟,可能是几个小时,这取决于手机,它会减慢速度,应用程序几乎无法工作,我已将其缩小到距离计算范围,但我不知道如何解决。我将应用程序中的所有其他十进制数字转换为浮点数,这有点帮助,但我需要双倍的距离。这是代码
`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;
}`
解决方案
您不应该List vertices
每次都根据该列表从头开始计算距离。相反,您应该跟踪overallDistance
and ,一旦将新条目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;
}
}
推荐阅读
- javascript - 使用javascript动态单击按钮时如何在innerHTML中显示数据?
- react-native - Formic 组件导致“错误:元素类型无效”。无法确定原因
- javascript - Nodejs Sequelize 的 FindOne() 模型包含舍入或截断的值
- vue.js - Vuejs - 如何添加多个加载指示器(微调器)以彼此具有不同的状态?
- html - 为什么溢出会覆盖父容器宽度?
- node.js - Angular SSR - 通用,
- kubernetes - 在 traefik TCP 路由映射中使用 hostSNI(*) 有什么缺点
- xslt - p & imag 移入 observ 元素 - XSLT
- html - 如何使用 display flex 在图像网格下方设置
- mongodb - mongodb sum 聚合返回浮点数而不是整数