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