维护一个很久之前的项目 需要新增一些功能-在此记录下
后端进行解析--使用百度地图api
http://api.map.baidu.com/reverse_geocoding/v3/
首先需要登入百度地图开放平台注册AK -- http://lbsyun.baidu.com/apiconsole/key#/home
我这里选中的则是微信小程序
下面就是后端代码实现 这里使用为java 请求接口
http://api.map.baidu.com/reverse_geocoding/v3/?ak=您的ak&output=json&coordtype=wgs84ll&location=31.225696563611,121.49884033194 //GET请求
后端逻辑代码
针对百度地图api请求具体参数说明
location : 经纬度 经度在前 纬度在后 以逗号分割 例如 38.76623,116.43213
ak : 用户申请注册的key,自v2开始参数修改为“ak”,之前版本参数为key
output : 输出格式
详细内容请访问 --百度地图开发平台服务文档
http://lbsyun.baidu.com/index.php?title=webapi/guide/webservice-geocoding-abroad
具体实现
/** * 根据经纬度获取位置信息 * * @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请求返回信息
http://xiaoqa.vaiwan.com 这个是自己的内网穿透 大家没必要去访问的
遇到的问题
question 1
220 | APP Referer校验失败 |
刚进行测试的时候出现该问题,其原因个人推测为 是本地请求没有获取到小程序的APPID
解决:修改百度地图开放平台的应用 APPID处为 * 参考图二 。推到线上之后可以改回正常的APPID,多个以逗号分割(为测试)