From 8b09fbc19a96b57bf1d0e4d7c79b51a76aeca554 Mon Sep 17 00:00:00 2001
From: Pu Zhibing <393733352@qq.com>
Date: 星期五, 28 三月 2025 19:57:56 +0800
Subject: [PATCH] 修改bug

---
 DriverIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/GoogleMap/GoogleMapUtil.java |   85 +++++++++++++++++++++++++++++++++---------
 1 files changed, 67 insertions(+), 18 deletions(-)

diff --git a/DriverIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/GoogleMap/GoogleMapUtil.java b/DriverIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/GoogleMap/GoogleMapUtil.java
index aa6b522..c9c45a9 100644
--- a/DriverIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/GoogleMap/GoogleMapUtil.java
+++ b/DriverIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/GoogleMap/GoogleMapUtil.java
@@ -4,13 +4,14 @@
 import com.google.gson.GsonBuilder;
 import com.google.maps.*;
 import com.google.maps.model.*;
+import com.stylefeng.guns.core.util.ToolUtil;
 
 /**
  * 谷歌地图工具类
  */
 public class GoogleMapUtil {
 
-    private final static String key = "AIzaSyA_FEliOkbkL1IAHQsnBpbpo9MlIp729H0";
+    private final static String key = "AIzaSyCG6PsfkaCEc94VK2vIAZk1YYKvOS_Ewts";
 
 
     /**
@@ -46,11 +47,14 @@
      * @return
      * @throws Exception
      */
-    public static ReverseGeocodeVo getReverseGeocode(double lat, double lng) throws Exception{
+    public static ReverseGeocodeVo getReverseGeocode(double lat, double lng, String tripId) throws Exception{
         GeoApiContext context = new GeoApiContext.Builder()
                 .apiKey(key)
                 .build();
         GeocodingApiRequest request = GeocodingApi.reverseGeocode(context, new LatLng(lat, lng));
+        if(ToolUtil.isNotEmpty(tripId)){
+            request.header("X-Goog-Maps-Experience-ID", tripId);//行程id
+        }
         GeocodingResult[] results = request.await();
         ReverseGeocodeVo vo = null;
         if(results.length > 0){
@@ -62,8 +66,10 @@
             AddressComponent[] addressComponents = results[0].addressComponents;
             AddressComponentsVo[] addressComponentsVos = new AddressComponentsVo[addressComponents.length];
             for (int i = 0; i < addressComponents.length; i++) {
-                addressComponentsVos[i].setLongName(addressComponents[i].longName);
-                addressComponentsVos[i].setShortName(addressComponents[i].shortName);
+                AddressComponentsVo addressComponentsVo = new AddressComponentsVo();
+                addressComponentsVo.setLongName(addressComponents[i].longName);
+                addressComponentsVo.setShortName(addressComponents[i].shortName);
+                addressComponentsVos[i] = addressComponentsVo;
             }
             String address = results[0].formattedAddress;
             vo.setAddressComponentsVos(addressComponentsVos);
@@ -95,6 +101,39 @@
             String formattedAddress = candidates[0].formattedAddress;
             String name = candidates[0].name;
             Geometry geometry = candidates[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;
+    }
+
+
+    /**
+     * 模糊搜索地图内容
+     * @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.query(query);
+        PlacesSearchResponse placesSearchResponse = request.await();
+        PlacesSearchResult[] results = placesSearchResponse.results;
+        FindPlaceFromTextVo vo = null;
+        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;
@@ -144,15 +183,31 @@
      * @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);
+    public static DistancematrixVo getDistancematrix(Double sLat, Double sLnt, Double eLat, Double eLnt, String tripId) 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);//出行方式(驾车)
+        if(ToolUtil.isNotEmpty(tripId)){
+            request.header("X-Goog-Maps-Experience-ID", tripId);//行程id
         }
-        return null;
+        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];
+        DistanceMatrixElementStatus status = elements.status;
+        if(status.compareTo(DistanceMatrixElementStatus.OK) != 0){
+            return null;
+        }
+        DistancematrixVo vo = new DistancematrixVo();
+        vo.setDistance(elements.distance.inMeters);
+        vo.setDuration(elements.duration.inSeconds);
+        return vo;
     }
 
 
@@ -179,12 +234,6 @@
 
 
 
-    public static void main(String[] ages){
-        try {
-        } catch (Exception e) {
-            e.printStackTrace();
-        }
-    }
 
 
 

--
Gitblit v1.7.1