doum
昨天 0400e752e3021606012eb08992fc13216edfb377
server/visits/dmvisit_service/src/main/java/com/doumee/core/tsp/DistanceCalculator.java
@@ -22,10 +22,22 @@
    public static void main(String[] args) {
        //118.363428,31.326485
        //118.363312,31.326638
        System.out.println(calculateDistance(39.326638d,116.363312d,31.326606,118.363272));
        JkCustomer start = new JkCustomer();
        start.setId(-1);
        start.setLongitude(new BigDecimal(118.39));
        start.setLatitude(new BigDecimal(31.28));
        JkCustomer c = new JkCustomer();
        c.setId(-2);
        c.setLongitude(new BigDecimal(118.328593));
        c.setLatitude(new BigDecimal(30.914289));
        String url="https://restapi.amap.com/v3/direction/driving?origin=${long1},${lat1}&destination=${long2},${lat2}&extensions=basel&key=248ee35dcdfe3f399ffaf12ac4299eca";
        DistanceCustomerModel dm = DistanceCalculator.calculateDistanceGaode(url,start,c);
        System.out.println(dm.getDistance());
    }
    public static DistanceCustomerModel calculateDistanceGaode(String urlStr, JkCustomer c1, JkCustomer c2) {
    public static  DistanceCustomerModel calculateDistanceGaode(String urlStr, JkCustomer c1, JkCustomer c2) {
        DistanceCustomerModel r =new DistanceCustomerModel();
        r.setStart(c1);
        r.setEnd(c2);
@@ -67,10 +79,10 @@
               r.setCode(1);
               log.error("获取交通规划线路信息成功==============");
            }else{
                log.error("获取交通规划线路信息成功=====失败!!=========");
                log.error("获取交通规划线路信息成功=====失败!!========="+c1.getName()+"==="+c2.getName()+result);
            }
        }catch (Exception e){
            log.error("获取交通规划线路信息成功=====失败==========");
            log.error("获取交通规划线路信息成功=====失败=========="+c1.getName()+"==="+c2.getName());
        }
        return r ;
@@ -145,4 +157,16 @@
        return  (long) (EARTH_RADIUS * c * 1000);
    }
    public static long calculateDistanceDecinal (BigDecimal lat1, BigDecimal lon1, BigDecimal lat2, BigDecimal lon2) {
        double dLat = Math.toRadians(Constants.formatBigdecimal(lat2).doubleValue() - Constants.formatBigdecimal(lat1).doubleValue());
        double dLon = Math.toRadians(Constants.formatBigdecimal(lon2).doubleValue()  - Constants.formatBigdecimal(lon1).doubleValue() );
        double a = Math.sin(dLat / 2) * Math.sin(dLat / 2) +
                Math.cos(Math.toRadians(Constants.formatBigdecimal(lat1).doubleValue()))
                        * Math.cos(Math.toRadians(Constants.formatBigdecimal(lat2).doubleValue())) *
                        Math.sin(dLon / 2) * Math.sin(dLon / 2);
        double c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));
        return  (long) (EARTH_RADIUS * c );
    }
}