From 53562814add61acfdc02d6b25dae6324f6fd5f92 Mon Sep 17 00:00:00 2001
From: puzhibing <393733352@qq.com>
Date: 星期四, 18 五月 2023 16:38:14 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'

---
 UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/GoogleMap/GoogleMapUtil.java |  125 +++++++++++++++++++++++++++++------------
 1 files changed, 88 insertions(+), 37 deletions(-)

diff --git a/UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/GoogleMap/GoogleMapUtil.java b/UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/GoogleMap/GoogleMapUtil.java
index 8712700..80b9c1f 100644
--- a/UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/GoogleMap/GoogleMapUtil.java
+++ b/UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/GoogleMap/GoogleMapUtil.java
@@ -1,5 +1,6 @@
 package com.stylefeng.guns.modular.system.util.GoogleMap;
 
+import com.alibaba.fastjson.JSON;
 import com.google.gson.Gson;
 import com.google.gson.GsonBuilder;
 import com.google.maps.*;
@@ -22,11 +23,13 @@
         GeoApiContext context = new GeoApiContext.Builder()
                 .apiKey(key)
                 .build();
-        GeocodingResult[] results =  GeocodingApi.geocode(context, address).await();
+        GeocodingApiRequest request = GeocodingApi.geocode(context, address);
+        request.language("en");
+        GeocodingResult[] results =  request.await();
         GeocodeVo vo = null;
         if(results.length > 0){
             Gson gson = new GsonBuilder().setPrettyPrinting().create();
-            System.out.println(gson.toJson(results[0].addressComponents));
+            System.err.println(gson.toJson(results[0].addressComponents));
 
             Geometry geometry = results[0].geometry;
             LatLng location = geometry.location;
@@ -51,13 +54,12 @@
                 .apiKey(key)
                 .build();
         GeocodingApiRequest request = GeocodingApi.reverseGeocode(context, new LatLng(lat, lng));
+        request.language("en");
         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));
-
-
+            System.err.println(gson.toJson(results[0].addressComponents));
             vo = new ReverseGeocodeVo();
             AddressComponent[] addressComponents = results[0].addressComponents;
             AddressComponentsVo[] addressComponentsVos = new AddressComponentsVo[addressComponents.length];
@@ -87,16 +89,24 @@
                 .apiKey(key)
                 .build();
         FindPlaceFromTextRequest request = new FindPlaceFromTextRequest(context);
+        request.language("en");
         request.input(input);
         request.inputType(FindPlaceFromTextRequest.InputType.TEXT_QUERY);
         FindPlaceFromText findPlaceFromText = request.await();
         PlacesSearchResult[] candidates = findPlaceFromText.candidates;
         FindPlaceFromTextVo vo = null;
+        System.err.println(JSON.toJSONString(candidates));
         if(candidates.length > 0){
             vo = new FindPlaceFromTextVo();
             String formattedAddress = candidates[0].formattedAddress;
             String name = candidates[0].name;
             Geometry geometry = candidates[0].geometry;
+            if(null == geometry){//没有返回结果,使用place_id继续搜索
+                // [{"permanentlyClosed":false,"placeId":"ChIJy1edVzvF7zYRaOqiGTkmb6I","rating":0.0,"userRatingsTotal":0}]
+                String placeId = candidates[0].placeId;
+
+
+            }
             LatLng location = geometry.location;
             double lat = location.lat;
             double lng = location.lng;
@@ -109,6 +119,40 @@
         return vo;
     }
 
+
+    /**
+     * 模糊搜索地图内容
+     * @param query
+     * @return
+     * @throws Exception
+     */
+    public static FindPlaceFromTextVo textsearch(String query) throws Exception{
+        GeoApiContext context = new GeoApiContext.Builder()
+                .apiKey(key)
+                .build();
+        TextSearchRequest request = new TextSearchRequest(context);
+        request.language("en");
+        request.query(query);
+        PlacesSearchResponse placesSearchResponse = request.await();
+        PlacesSearchResult[] results = placesSearchResponse.results;
+        FindPlaceFromTextVo vo = null;
+        System.err.println(JSON.toJSONString(results));
+        if(results.length > 0){
+            vo = new FindPlaceFromTextVo();
+            String formattedAddress = results[0].formattedAddress;
+            String name = results[0].name;
+            Geometry geometry = results[0].geometry;
+            LatLng location = geometry.location;
+            double lat = location.lat;
+            double lng = location.lng;
+
+            vo.setName(name);
+            vo.setAddress(formattedAddress);
+            vo.setLat(lat);
+            vo.setLng(lng);
+        }
+        return vo;
+    }
 
 
     /**
@@ -123,6 +167,43 @@
                 .apiKey(key)
                 .build();
         DistanceMatrixApiRequest request = DistanceMatrixApi.getDistanceMatrix(context, new String[]{origin}, new String[]{destination});
+        request.language("en");
+        request.mode(TravelMode.DRIVING);//出行方式(驾车)
+        DistanceMatrix distanceMatrix = request.await();
+        Gson gson = new GsonBuilder().setPrettyPrinting().create();
+        System.err.println(gson.toJson(distanceMatrix));
+        context.shutdown();
+
+        DistanceMatrixElement elements = distanceMatrix.rows[0].elements[0];
+        DistanceMatrixElementStatus status = elements.status;
+        DistancematrixVo vo = new DistancematrixVo();
+        if(DistanceMatrixElementStatus.OK.equals(status)){
+            vo.setDistance(elements.distance.inMeters);
+            vo.setDuration(elements.duration.inSeconds);
+        }else{
+            vo.setDistance(0L);
+            vo.setDuration(0L);
+        }
+        return vo;
+    }
+
+
+    /**
+     * 获取两点之间的距离
+     * @param sLat
+     * @param sLnt
+     * @param eLat
+     * @param eLnt
+     * @return
+     * @throws Exception
+     */
+    public static DistancematrixVo getDistancematrix(Double sLat, Double sLnt, Double eLat, Double eLnt) throws Exception{
+        GeoApiContext context = new GeoApiContext.Builder()
+                .apiKey(key)
+                .build();
+        DistanceMatrixApiRequest request = DistanceMatrixApi.newRequest(context);
+        request.origins(new LatLng(sLat, sLnt));
+        request.destinations(new LatLng(eLat, eLnt));
         request.mode(TravelMode.DRIVING);//出行方式(驾车)
         DistanceMatrix distanceMatrix = request.await();
         Gson gson = new GsonBuilder().setPrettyPrinting().create();
@@ -138,27 +219,6 @@
 
 
     /**
-     * 获取两点之间的距离
-     * @param sLat
-     * @param sLnt
-     * @param eLat
-     * @param eLnt
-     * @return
-     * @throws Exception
-     */
-    public static DistancematrixVo getDistancematrix(Double sLat, Double sLnt, Double eLat, Double eLnt) throws Exception{
-        ReverseGeocodeVo reverseGeocode = getReverseGeocode(sLat, sLnt);
-        ReverseGeocodeVo reverseGeocode1 = getReverseGeocode(eLat, eLnt);
-        if(null != reverseGeocode && null != reverseGeocode1){
-            String origin = reverseGeocode.getAddress();
-            String destination = reverseGeocode1.getAddress();
-            return getDistancematrix(origin, destination);
-        }
-        return null;
-    }
-
-
-    /**
      * 获取两地点之间的线路规划
      * @param origin        起点 要计算方向的位置ID、地址或文本纬度/经度值。目标参数的选项与原点参数的相同。
      * @param destination   终点 要计算方向的位置ID、地址或文本纬度/经度值。目标参数的选项与原点参数的相同。
@@ -169,24 +229,15 @@
                 .apiKey(key)
                 .build();
         DirectionsApiRequest directions = DirectionsApi.getDirections(context, origin, destination);
+        directions.language("en");
         directions.mode(TravelMode.DRIVING);//出行方式(驾车)
         DirectionsResult result = directions.await();
 
         Gson gson = new GsonBuilder().setPrettyPrinting().create();
-        System.out.println(gson.toJson(result));
+        System.err.println(gson.toJson(result));
         context.shutdown();
     }
 
-
-
-
-
-    public static void main(String[] ages){
-        try {
-        } catch (Exception e) {
-            e.printStackTrace();
-        }
-    }
 
 
 

--
Gitblit v1.7.1