From ea719b0443b8ccbc6d17349796936664ff3261d0 Mon Sep 17 00:00:00 2001
From: puzhibing <393733352@qq.com>
Date: 星期六, 11 二月 2023 19:04:43 +0800
Subject: [PATCH] 修改bug

---
 UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/GoogleMap/GoogleMapUtil.java |   80 ++++++++++++++++++++++++++++++---------
 1 files changed, 61 insertions(+), 19 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..5de5bdc 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,16 +167,23 @@
                 .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.out.println(gson.toJson(distanceMatrix));
+        System.err.println(gson.toJson(distanceMatrix));
         context.shutdown();
 
         DistanceMatrixElement elements = distanceMatrix.rows[0].elements[0];
+        DistanceMatrixElementStatus status = elements.status;
         DistancematrixVo vo = new DistancematrixVo();
-        vo.setDistance(elements.distance.inMeters);
-        vo.setDuration(elements.duration.inSeconds);
+        if(DistanceMatrixElementStatus.OK.equals(status)){
+            vo.setDistance(elements.distance.inMeters);
+            vo.setDuration(elements.duration.inSeconds);
+        }else{
+            vo.setDistance(0L);
+            vo.setDuration(0L);
+        }
         return vo;
     }
 
@@ -169,24 +220,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