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