From 4c99ee7028c3fe58a2cd4b8273b22c75c45574fc Mon Sep 17 00:00:00 2001
From: Pu Zhibing <393733352@qq.com>
Date: 星期五, 16 五月 2025 10:27:41 +0800
Subject: [PATCH] 修改文档bug

---
 UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/GoogleMap/GoogleMapUtil.java |  141 +++++++++++++++++++++++++++++++++++++++-------
 1 files changed, 119 insertions(+), 22 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 cabe7c4..7b56632 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,16 +1,18 @@
 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.*;
 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";
 
 
     /**
@@ -22,11 +24,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;
@@ -46,21 +50,35 @@
      * @return
      * @throws Exception
      */
-    public static String 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));
+        request.language("en");
+        if(ToolUtil.isNotEmpty(tripId)){
+            request.header("X-Goog-Maps-Experience-ID", tripId);//行程id
+        }
         GeocodingResult[] results = request.await();
-        String address = null;
+        ReverseGeocodeVo vo = null;
         if(results.length > 0){
             Gson gson = new GsonBuilder().setPrettyPrinting().create();
-            System.out.println(gson.toJson(results[0].addressComponents));
-
-            address = results[0].formattedAddress;
+            System.err.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 address;
+        return vo;
     }
 
 
@@ -75,16 +93,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;
@@ -98,6 +124,40 @@
     }
 
 
+    /**
+     * 模糊搜索地图内容
+     * @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;
+    }
+
 
     /**
      * 获取两个地点之间的预估里程和预估时间
@@ -106,24 +166,70 @@
      * @return
      * @throws Exception
      */
-    public static DistancematrixVo getDistancematrix(String origin, String destination) throws Exception{
+    public static DistancematrixVo getDistancematrix(String origin, String destination, String tripId) throws Exception{
         GeoApiContext context = new GeoApiContext.Builder()
                 .apiKey(key)
                 .build();
         DistanceMatrixApiRequest request = DistanceMatrixApi.getDistanceMatrix(context, new String[]{origin}, new String[]{destination});
+        request.language("en");
         request.mode(TravelMode.DRIVING);//出行方式(驾车)
+        if(ToolUtil.isNotEmpty(tripId)){
+            request.header("X-Goog-Maps-Experience-ID", tripId);//行程id
+        }
+        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, 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
+        }
         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;
     }
-
 
 
     /**
@@ -137,24 +243,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