我有一份車輛清單,我需要用它來計算每輛車使用的總燃料。我正在使用Java streams循環(huán)遍歷列表,獲取車輛,使用 計算其距離Google distance matrix api,使用距離計算燃料使用量并返回響應。我注意到程序掛起很可能是因為它在移動到下一個項目之前stream沒有等待Matrix api返回響應,我這樣說是因為我已經將system.out.println調用放入Matrix method并且一些消息沒有被打印出來。假設計算總燃料使用量的代碼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; }
1 回答

臨摹微笑
TA貢獻1982條經驗 獲得超2個贊
您在創(chuàng)建 LatLng 時輸入錯誤,您發(fā)送的是緯度而不是經度。可能是谷歌沒有回復您或需要很長時間才能回復,因為無法計算出這些點之間的路線。
添加回答
舉報
0/150
提交
取消