|
@@ -47,15 +47,26 @@ public class ApiHospitalController {
|
|
|
if (StrUtil.isEmpty(hospitalVo.getCoordinates())) {
|
|
|
continue;
|
|
|
}
|
|
|
+
|
|
|
+ // 获取两个点位的相对距离,单位:米
|
|
|
double distance = MapTools.calculate(coordinates.split(",")[0], coordinates.split(",")[1],
|
|
|
hospitalVo.getCoordinates().split(",")[0], hospitalVo.getCoordinates().split(",")[1]);
|
|
|
|
|
|
- // 转化为km,保留一位小数
|
|
|
- BigDecimal relativeDistance = BigDecimal.valueOf(distance).abs().divide(BigDecimal.valueOf(1000), 1, RoundingMode.HALF_UP);
|
|
|
- hospitalVo.setRelativeDistance(relativeDistance);
|
|
|
+// BigDecimal relativeDistance = BigDecimal.valueOf(distance).abs().divide(BigDecimal.valueOf(1000), 1, RoundingMode.HALF_UP);
|
|
|
+ hospitalVo.setRelativeDistance(BigDecimal.valueOf(distance).abs().setScale(0, RoundingMode.DOWN));
|
|
|
+ hospitalVo.setDistanceUnit("m");
|
|
|
}
|
|
|
// 根据相对距离排序,从小到大
|
|
|
hospitalVoList.sort(Comparator.comparing(HospitalVo::getRelativeDistance));
|
|
|
+
|
|
|
+ for (HospitalVo hospitalVo : hospitalVoList) {
|
|
|
+ // 如果相对距离大于1000米,则转换为km,保留一位小数
|
|
|
+ if (hospitalVo.getRelativeDistance().compareTo(BigDecimal.valueOf(1000)) > 0) {
|
|
|
+ BigDecimal relativeDistance = hospitalVo.getRelativeDistance().divide(BigDecimal.valueOf(1000), 1, RoundingMode.HALF_UP);
|
|
|
+ hospitalVo.setRelativeDistance(relativeDistance);
|
|
|
+ hospitalVo.setDistanceUnit("km");
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
return R.ok(hospitalVoList);
|