liujie
2023-08-31 8d7dbd6d2c0775d45043474c1525ad827b4cd3bd
src/main/java/com/stylefeng/guns/modular/system/utils/GoogleMap/GoogleMapUtil.java
@@ -21,7 +21,8 @@
@Component
public class GoogleMapUtil {
    private static final String key = "AIzaSyBBW0XxW1FK7IXmmS7KFtAjX3o99eFPsss";
    //    private final String key = "AIzaSyBBW0XxW1FK7IXmmS7KFtAjX3o99eFPsss";
    private final String key = "AIzaSyBBW0XxW1FK7IXmmS7KFtAjX3o99eFPsss";
    @Autowired
    private HttpClientUtil httpClientUtil;
@@ -32,7 +33,8 @@
     * @param address       地址信息
     * @throws Exception
     */
    public static GeocodeVo getGeocode(String address){
    public GeocodeVo getGeocode(String address){
        log.info("谷歌地图  根据地址获取经纬度:"+address);
        GeoApiContext context = new GeoApiContext.Builder()
                .apiKey(key)
                .build();
@@ -68,40 +70,40 @@
     */
    public ReverseGeocodeVo getReverseGeocode(double lat, double lng) throws Exception{
        // TODO: 2022/10/22 临时用IGO跳转
        Map<String, Object> map = new HashMap<>();
        map.put("lat", lat);
        map.put("lng", lng);
        map.put("key", key);
        HttpResult httpResult = httpClientUtil.pushHttpRequset("POST", "http://182.160.16.251:1010/base/googleMap/getReverseGeocode", map, null, "form");
        ReverseGeocodeVo reverseGeocode = JSON.parseObject(httpResult.getData(), ReverseGeocodeVo.class);
        return reverseGeocode;
//        Map<String, Object> map = new HashMap<>();
//        map.put("lat", lat);
//        map.put("lng", lng);
//        map.put("key", key);
//        HttpResult httpResult = httpClientUtil.pushHttpRequset("POST", "http://182.160.16.251:1010/base/googleMap/getReverseGeocode", map, null, "form");
//        ReverseGeocodeVo reverseGeocode = JSON.parseObject(httpResult.getData(), ReverseGeocodeVo.class);
//        return reverseGeocode;
//        GeoApiContext context = new GeoApiContext.Builder()
//                .apiKey(key)
//                .build();
//        GeocodingApiRequest request = GeocodingApi.reverseGeocode(context, new LatLng(lat, lng));
//        GeocodingResult[] results = request.await();
//        ReverseGeocodeVo vo = null;
//        if(results.length > 0){
//            Gson gson = new GsonBuilder().setPrettyPrinting().create();
//            System.out.println(gson.toJson(results[0].addressComponents));
//
//
//            vo = new ReverseGeocodeVo();
//            AddressComponent[] addressComponents = results[0].addressComponents;
//            AddressComponentsVo[] addressComponentsVos = new AddressComponentsVo[addressComponents.length];
//            for (int i = 0; i < addressComponents.length; i++) {
//                AddressComponentsVo addressComponentsVos1 = new AddressComponentsVo();
//                addressComponentsVos1.setLongName(addressComponents[i].longName);
//                addressComponentsVos1.setShortName(addressComponents[i].shortName);
//                addressComponentsVos[i] = addressComponentsVos1;
//            }
//            String address = results[0].formattedAddress;
//            vo.setAddressComponentsVos(addressComponentsVos);
//            vo.setAddress(address);
//        }
//        context.shutdown();
//        return vo;
        GeoApiContext context = new GeoApiContext.Builder()
                .apiKey(key)
                .build();
        GeocodingApiRequest request = GeocodingApi.reverseGeocode(context, new LatLng(lat, lng));
        GeocodingResult[] results = request.await();
        ReverseGeocodeVo vo = null;
        if(results.length > 0){
            Gson gson = new GsonBuilder().setPrettyPrinting().create();
            System.out.println(gson.toJson(results[0].addressComponents));
            vo = new ReverseGeocodeVo();
            AddressComponent[] addressComponents = results[0].addressComponents;
            AddressComponentsVo[] addressComponentsVos = new AddressComponentsVo[addressComponents.length];
            for (int i = 0; i < addressComponents.length; i++) {
                AddressComponentsVo addressComponentsVos1 = new AddressComponentsVo();
                addressComponentsVos1.setLongName(addressComponents[i].longName);
                addressComponentsVos1.setShortName(addressComponents[i].shortName);
                addressComponentsVos[i] = addressComponentsVos1;
            }
            String address = results[0].formattedAddress;
            vo.setAddressComponentsVos(addressComponentsVos);
            vo.setAddress(address);
        }
        context.shutdown();
        return vo;
    }
@@ -197,29 +199,29 @@
     */
    public DistancematrixVo getDistancematrix(String origin, String destination) throws Exception{
        // TODO: 2022/10/22 临时用IGO跳转
        Map<String, Object> map = new HashMap<>();
        map.put("origin", origin);
        map.put("destination", destination);
        map.put("key", key);
        HttpResult httpResult = httpClientUtil.pushHttpRequset("POST", "http://182.160.16.251:1010/base/googleMap/getDistancematrix", map, null, "form");
        DistancematrixVo reverseGeocode = JSON.parseObject(httpResult.getData(), DistancematrixVo.class);
        return reverseGeocode;
//        Map<String, Object> map = new HashMap<>();
//        map.put("origin", origin);
//        map.put("destination", destination);
//        map.put("key", key);
//        HttpResult httpResult = httpClientUtil.pushHttpRequset("POST", "http://182.160.16.251:1010/base/googleMap/getDistancematrix", map, null, "form");
//        DistancematrixVo reverseGeocode = JSON.parseObject(httpResult.getData(), DistancematrixVo.class);
//        return reverseGeocode;
//        GeoApiContext context = new GeoApiContext.Builder()
//                .apiKey(key)
//                .build();
//        DistanceMatrixApiRequest request = DistanceMatrixApi.getDistanceMatrix(context, new String[]{origin}, new String[]{destination});
//        request.mode(TravelMode.DRIVING);//出行方式(驾车)
//        DistanceMatrix distanceMatrix = request.await();
//        Gson gson = new GsonBuilder().setPrettyPrinting().create();
//        System.out.println(gson.toJson(distanceMatrix));
//        context.shutdown();
//
//        DistanceMatrixElement elements = distanceMatrix.rows[0].elements[0];
//        DistancematrixVo vo = new DistancematrixVo();
//        vo.setDistance(elements.distance.inMeters);
//        vo.setDuration(elements.duration.inSeconds);
//        return vo;
        GeoApiContext context = new GeoApiContext.Builder()
                .apiKey(key)
                .build();
        DistanceMatrixApiRequest request = DistanceMatrixApi.getDistanceMatrix(context, new String[]{origin}, new String[]{destination});
        request.mode(TravelMode.DRIVING);//出行方式(驾车)
        DistanceMatrix distanceMatrix = request.await();
        Gson gson = new GsonBuilder().setPrettyPrinting().create();
        System.out.println(gson.toJson(distanceMatrix));
        context.shutdown();
        DistanceMatrixElement elements = distanceMatrix.rows[0].elements[0];
        DistancematrixVo vo = new DistancematrixVo();
        vo.setDistance(elements.distance.inMeters);
        vo.setDuration(elements.duration.inSeconds);
        return vo;
    }
@@ -264,4 +266,16 @@
    }
    public void main(String[] ages){
        try {
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}