From d45923a8b023f9a010fc75f53b13ffca01c573fa Mon Sep 17 00:00:00 2001 From: puzhibing <393733352@qq.com> Date: 星期五, 22 十二月 2023 10:57:46 +0800 Subject: [PATCH] 更新 --- UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/GoogleMap/GoogleMapUtil.java | 107 ++++++++++++++++++++++++++++++++++++++++------------- 1 files changed, 81 insertions(+), 26 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..f15c5f7 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; } @@ -147,14 +198,27 @@ * @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); + 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);//出行方式(驾车) + 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; } - return null; + DistancematrixVo vo = new DistancematrixVo(); + vo.setDistance(elements.distance.inMeters); + vo.setDuration(elements.duration.inSeconds); + return vo; } @@ -169,24 +233,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