gpt4 book ai didi

Java流,等待Google距离矩阵返回结果

转载 作者:行者123 更新时间:2023-11-30 05:37:13 25 4
gpt4 key购买 nike

我有一个车辆列表,需要计算每辆车的总燃料消耗量。我使用 Java Streams 循环访问列表,获取车辆,使用 Google 距离矩阵 api 计算其距离,使用该距离计算燃料使用量并返回响应。我注意到程序只是挂起,很可能是 stream 没有等待 Matrix api 在移动到下一个项目之前返回响应,我这么说是因为我已将 system.out.println 调用放入 Matrix 方法 中,并且某些消息未打印。

应该计算总燃料使用量的代码

vehicles.stream().map(vehicles ->
calculateTotalFuelBeingUsedByAllVehicles(vehicle, getDistanceBetweenOriginsAndDestination(
new LatLng(vehicle.getOrigin().getLatitude(), vehicle.getOrigin().getLatitude()), new LatLng(vehicle.getDestination().getLatitude(), vehicles.getDestination().getLatitude()))))
.collect(Collectors.toList());
    public static double getDistanceBetweenOriginsAndDestination(LatLng origin, LatLng destination){
//Gets printed
System.out.println("Calculating distance");
GeoApiContext context = new GeoApiContext.Builder()
.apiKey(GOOGLE_MAPS_API_KEY)
.build();
DistanceMatrixApiRequest distanceMatrixApiRequest = DistanceMatrixApi.newRequest(context)
.mode(TravelMode.DRIVING)
.trafficModel(TrafficModel.BEST_GUESS)
.departureTime(Instant.now().atZone(ZoneOffset.UTC).toInstant())
.destinations(destination)
.origins(origin);
try {

long distance = Arrays.stream(distanceMatrixApiRequest.await().rows)
.flatMap(distanceMatrixRow -> Arrays.stream(distanceMatrixRow.elements))
.mapToLong(distanceMatrixElement -> distanceMatrixElement.distance.inMeters)
.sum();

//Never gets printed
System.out.println("Calculated distance: "+distance);
return distance;

} catch (ApiException | InterruptedException | IOException e) {
//Never gets printed
System.out.println("Error encountered when calculating distance");
e.printStackTrace();
}
return 0;
}

getDistanceBetweenOriginsAndDestination 中,System.out.println("Calculated distance") 被打印,其余部分则不打印。

最佳答案

您在创建 LatLng 时出现拼写错误,您发送的是纬度而不是经度。可能是 Google 没有回复您或需要很长时间才能回复,因为无法计算这些点之间的路线。

关于Java流,等待Google距离矩阵返回结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56354877/

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