gpt4 book ai didi

android - 带有航路点的 Directions API 总距离和持续时间

转载 作者:太空狗 更新时间:2023-10-29 15:45:43 25 4
gpt4 key购买 nike

我正在从我的 Android 应用中的 Directions API 获取包括路标在内的路线。它包含多个具有自己的距离和持续时间的“腿”段。有没有办法将所有距离和持续时间相加得到总值?

示例:从 Direction API 中剥离 json 段

legs": [
{
"distance": {
"text": "389 km",
"value": 389438
},
"duration": {
"text": "6 hours 31 mins",
"value": 23452
}
},
{
"distance": {
"text": "0.5 km",
"value": 487
},
"duration": {
"text": "2 mins",
"value": 102
}
}
]

从上面的响应中,是否有一种方法可以计算并显示如下输出:

总距离:389.5公里总时长:6小时33分钟

最佳答案

除了我对@Kushal 的评论和回答之外,还有一种计算总时间的方法。我跳过了获取 JSONObject 的方法,因为它已经描述并给出了一个示例,其中包含您在解析 JSON 时获得的给定 String[]。在这个例子中,我用给定的响应做了所有可能的场景,所以你可以在不修改的情况下使用它:

    String[] timeItems = {"4 days 1 hour 12 mins", "5 hours 9 mins"}; // as example for visibility
int[] total = {0, 0, 0}; // days, hours, minutes
for(int i = 0; i < timeItems.length; i++){
if(timeItems[i].contains("day ")){
total[0]++;
}else if(timeItems[i].contains("days")){
total[0] += Integer.valueOf(timeItems[i].substring(0, timeItems[i].indexOf(" days")));
}
if(timeItems[i].contains("hour ")){
total[1]++;
}else if(timeItems[i].contains("hours")){
if(timeItems[i].indexOf(" hours") <= 3){
total[1] += Integer.valueOf(timeItems[i].substring(0, timeItems[i].indexOf(" hours")));
}else{
if(timeItems[i].contains("days")){
total[1] += Integer.valueOf(timeItems[i].substring(timeItems[i].lastIndexOf("days ")) + 5, timeItems[i].indexOf(" hours"));
}else{
total[1] += Integer.valueOf(timeItems[i].substring(timeItems[i].lastIndexOf("day ")) + 4, timeItems[i].indexOf(" hours"));
}
}
}
if(timeItems[i].contains("min ")){
total[2]++;
}else if(timeItems[i].contains("mins")){
if(timeItems[i].indexOf(" mins") <= 3){
total[2] += Integer.valueOf(timeItems[i].substring(0, timeItems[i].indexOf(" mins")));
}else{
if(timeItems[i].contains("hours")){
total[2] += Integer.valueOf(timeItems[i].substring(timeItems[i].indexOf("hours ") + 6, timeItems[i].indexOf(" mins")));
}else{
total[2] += Integer.valueOf(timeItems[i].substring(timeItems[i].indexOf("hour ") + 5, timeItems[i].indexOf(" mins")));
}
}
}
}
Log.d("LOG", total[0] + " days " + total[1] + " hours " + total[2] + " mins.");

这比我想象的要复杂一点,也许可以以某种方式简化或使用类似的想法,但重点是向您展示工作示例。我调试了这段代码。它给出正确的输出:

05-19 23:00:38.687  14251-14251/whatever.com.myapplication D/LOG﹕ 4 days 6 hours 21 mins.

希望对您有所帮助。让我知道它是否适合您。

关于android - 带有航路点的 Directions API 总距离和持续时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30326091/

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