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