Переглянути джерело

使用百度地图获取油站地址

jk-GitHub-coder 3 роки тому
батько
коміт
6701e02443

+ 20 - 16
YijiaRestful/src/main/java/com/platform/yijia/controller/StationController.java

@@ -1,5 +1,4 @@
 package com.platform.yijia.controller;
-import com.alibaba.fastjson.JSONObject;
 import com.google.gson.Gson;
 import com.google.gson.GsonBuilder;
 import com.platform.yijia.config.YiJiaRequest;
@@ -11,9 +10,11 @@ import com.platform.yijia.service.AppUserInfoService;
 import com.platform.yijia.service.StationNoticeManageService;
 import com.platform.yijia.service.StationOilGunService;
 import com.platform.yijia.service.StationService;
+import com.platform.yijia.utils.BaiduMapUtil;
 import com.platform.yijia.utils.CodeMsg;
 import com.platform.yijia.utils.FeiEPrinterUtil;
 import com.platform.yijia.utils.ResultData;
+import net.sf.json.JSONObject;
 import org.apache.commons.lang3.StringUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -127,21 +128,24 @@ public class StationController {
         return gson.toJson(resultData);
     }
 
-//    //获取油站公告信息
-//    @RequestMapping(value = "/getStationNoticeInfo", method = RequestMethod.GET)
-//    @ResponseBody
-//    public String getStationNoticeInfo(@RequestParam Integer stationId){
-//        Gson gson =new Gson();
-//        //返回结果集
-//        ResultData resultData=null;
-//        if(stationId !=null){
-//            Map<String, Object> stationNoticeInfo = stationService.getStationNoticeInfo(stationId);
-//            resultData =ResultData.success(stationNoticeInfo);
-//        }else {
-//            resultData =ResultData.error(CodeMsg.REQUEST_FAIL);
-//        }
-//        return gson.toJson(resultData);
-//    }
+    //获取油站地址信息
+    @RequestMapping(value = "/getStationAddress", method = RequestMethod.GET)
+    @ResponseBody
+    public String getStationAddress(@RequestParam String lng, @RequestParam String lat){
+        Gson gson =new Gson();
+        //返回结果集
+        ResultData resultData=null;
+        JSONObject location = BaiduMapUtil.getLocation(lng, lat);
+        if(location !=null && location.containsKey("status") && location.get("status").toString().equals("0")){
+            JSONObject result = location.getJSONObject("result");
+            Map<String, Object> m = new HashMap<>();
+            m.put("address", result.getString("formatted_address"));
+            resultData = ResultData.success(m);
+        }else {
+            resultData = ResultData.error(CodeMsg.YEWU_FAIL);
+        }
+        return gson.toJson(resultData);
+    }
 
     //获取油站轮播图
     @RequestMapping(value = "/getStationPicList", method = RequestMethod.GET)

+ 54 - 0
YijiaRestful/src/main/java/com/platform/yijia/utils/BaiduMapUtil.java

@@ -0,0 +1,54 @@
+package com.platform.yijia.utils;
+
+import net.sf.json.JSONObject;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.io.BufferedReader;
+import java.io.InputStreamReader;
+import java.net.URL;
+import java.net.URLConnection;
+
+/**
+ * <Title> BaiduMapUtil </Title>
+ * <Decription> 百度地图经纬度获取地址工具类 </Decription>
+ * <Date> 2021年7月28日</Date>
+ * <Author> JK </Author>
+ */
+public class BaiduMapUtil {
+    private static Logger logger =(Logger) LoggerFactory.getLogger(BaiduMapUtil.class);
+    //百度地图ak值
+    private static final  String AK = "j9CtICRKVd3i0qBo4bFn9qHt5E7TzQDK";
+
+    /*
+     * 获取位置信息
+     * @param lng 经度值
+     * @param lat 纬度值
+     * @return
+     */
+    public static JSONObject getLocation(String lng, String lat){
+        String url = "http://api.map.baidu.com/reverse_geocoding/v3/?ak="+AK+"&output=json&coordtype=wgs84ll&location="+lat+","+ lng;
+        JSONObject obj = JSONObject.fromObject(HttpRequest(url));
+        return obj;
+    }
+
+    //发送请求
+    private static String HttpRequest (String url) {
+        StringBuilder json = new StringBuilder();
+        try {
+            URL oracle = new URL(url);
+            URLConnection yc = oracle.openConnection();
+            BufferedReader in = new BufferedReader(new InputStreamReader(yc.getInputStream(),"UTF-8"));
+            String inputLine = null;
+            while ( (inputLine = in.readLine()) != null) {
+                json.append(inputLine);
+            }
+            logger.info("百度地图获取位置信息成功:" + json);
+            in.close();
+        } catch (Exception e) {
+            e.printStackTrace();
+            logger.error("百度地图获取信息失败:" + e.getMessage());
+        }
+        return json.toString();
+    }
+}

+ 13 - 5
YijiaRestful/src/test/java/com/palatform/yijia/test.java

@@ -2,9 +2,8 @@ package com.palatform.yijia;
 
 import com.platform.yijia.pojo.CustomerElectronicCard;
 import com.platform.yijia.pojo.PayOrder;
-import com.platform.yijia.utils.DESUtils;
-import com.platform.yijia.utils.PosPrinterUtil;
-import com.platform.yijia.utils.QRcodeUtils;
+import com.platform.yijia.utils.*;
+import net.sf.json.JSONObject;
 import org.apache.commons.codec.digest.DigestUtils;
 
 import java.math.BigDecimal;
@@ -19,8 +18,17 @@ public class test {
     public static void main(String[] args) throws ParseException {
 
 
-        Date parse = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss").parse("2021-04-24 22:22:22");
-        System.out.println(parse);
+//        Date parse = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss").parse("2021-04-24 22:22:22");
+//        System.out.println(parse);
+
+//        String location = LocationUtil.getLocation("117.12009", "36.65184");
+//        System.out.println(location);
+        //117.022388,36.667508
+        JSONObject locationInfo = BaiduMapUtil.getLocation("117.12009", "36.65184");
+        System.out.println(locationInfo);
+//        String detailAddress = BaiduMapUtil.getDetailAddress("117.12009", "36.65184");
+//        System.out.println(detailAddress);
+
 
 //        BigDecimal discountPrice = new BigDecimal("5.36");
 //        BigDecimal sellPrice = discountPrice.multiply(new BigDecimal("98")).divide(new BigDecimal("100"));