From 79ceb8d197a1a3c4ec6ea17ef958555b001ef63a Mon Sep 17 00:00:00 2001
From: puzhibing <393733352@qq.com>
Date: 星期三, 07 二月 2024 10:32:15 +0800
Subject: [PATCH] 更新
---
UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/GoogleMap/GoogleMapUtil.java | 127 +++++++++++++++++++++++++++++++++++------
1 files changed, 107 insertions(+), 20 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..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;
@@ -46,21 +49,32 @@
* @return
* @throws Exception
*/
- public static String getReverseGeocode(double lat, double lng) throws Exception{
+ public static ReverseGeocodeVo getReverseGeocode(double lat, double lng) throws Exception{
GeoApiContext context = new GeoApiContext.Builder()
.apiKey(key)
.build();
GeocodingApiRequest request = GeocodingApi.reverseGeocode(context, new LatLng(lat, lng));
+ request.language("en");
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 +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;
@@ -97,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;
+ }
/**
@@ -111,6 +167,43 @@
.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.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) 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);//出行方式(驾车)
DistanceMatrix distanceMatrix = request.await();
Gson gson = new GsonBuilder().setPrettyPrinting().create();
@@ -118,12 +211,15 @@
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 +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