根据经纬度获取省市区 -- 逆地理编码

维护一个很久之前的项目 需要新增一些功能-在此记录下

后端进行解析--使用百度地图api 

http://api.map.baidu.com/reverse_geocoding/v3/

首先需要登入百度地图开放平台注册AK -- http://lbsyun.baidu.com/apiconsole/key#/home

根据经纬度获取省市区 -- 逆地理编码_第1张图片

我这里选中的则是微信小程序

 根据经纬度获取省市区 -- 逆地理编码_第2张图片

下面就是后端代码实现  这里使用为java 请求接口

http://api.map.baidu.com/reverse_geocoding/v3/?ak=您的ak&output=json&coordtype=wgs84ll&location=31.225696563611,121.49884033194  //GET请求

   后端逻辑代码

根据经纬度获取省市区 -- 逆地理编码_第3张图片

针对百度地图api请求具体参数说明

location : 经纬度 经度在前 纬度在后 以逗号分割 例如 38.76623,116.43213

ak          :  用户申请注册的key,自v2开始参数修改为“ak”,之前版本参数为key

output    : 输出格式

详细内容请访问 --百度地图开发平台服务文档

  http://lbsyun.baidu.com/index.php?title=webapi/guide/webservice-geocoding-abroad

根据经纬度获取省市区 -- 逆地理编码_第4张图片

具体实现

    /**
    *  根据经纬度获取位置信息
    *
    * @return
    */
   @RequestMapping("wx/Address")
   @ResponseBody
   public JSONObject getLocationMsg(double latitude, double longitude) {
      String location = latitude + "," + longitude;
   
      String urlString =
            "http://api.map.baidu.com/reverse_geocoding/v3/?ak=您的ak值&output=json&coordtype=wgs84ll&location=+"
                  + location;
      String res = "";
      try {
         URL url = new URL(urlString);
         java.net.HttpURLConnection conn = (java.net.HttpURLConnection) url.openConnection();
         conn.setDoOutput(true);
         conn.setRequestMethod("POST");
         java.io.BufferedReader in = new java.io.BufferedReader(
               new java.io.InputStreamReader(conn.getInputStream(), "UTF-8"));
         String line;
         while ((line = in.readLine()) != null) {
            res += line + "\n";
         }
         in.close();
      } catch (Exception e) {
         System.out.println("error in wapaction,and e is " + e.getMessage());
      }

      System.out.println(res);
      JSONObject object = JSON.parseObject(res);
      return object;
   }
}

postman请求返回信息

根据经纬度获取省市区 -- 逆地理编码_第5张图片

http://xiaoqa.vaiwan.com 这个是自己的内网穿透 大家没必要去访问的

遇到的问题

question 1   

220

APP Referer校验失败

刚进行测试的时候出现该问题,其原因个人推测为 是本地请求没有获取到小程序的APPID 

   解决:修改百度地图开放平台的应用 APPID处为 * 参考图二 。推到线上之后可以改回正常的APPID,多个以逗号分割(为测试)

 

 

你可能感兴趣的:(api对接,后端,java)