前言
一个小需求,需要查询某车某手机的位置信息,可以使用百度或者高德提供的地图API,本文以百度地图API为例。
获取ak
这是第一步,我们登录百度地图,创建应用获取ak
API接口地址
https://api.map.baidu.com/reverse_geocoding/v3/?ak=您的ak&output=json&coordtype=wgs84ll&location=31.225696563611,121.49884033194
入参出参传送门
方法实现
/**
*逆地理编码方法
*lat 纬度
*lng 经度
*/
public static TbStation getBaiDuDecoding(Double lat, Double lng) {TbStation tbStation = new TbStation();try {String ak = 您的ak;String url = "https://api.map.baidu.com/reverse_geocoding/v3/?ak=%s&output=json&coordtype=wgs84ll&ret_coordtype=wgs84ll&location=%s,%s&extensions_poi=1&extensions_town=true";url = String.format(url, ak, lat, lng);String res = HttpUtils.doGet(url, null, String.class);if (null == res || "".equals(res)) return null;JSONObject locationObject = JSON.parseObject(res).getJSONObject("result");if (locationObject != null) {JSONObject addressComponent = locationObject.getJSONObject("addressComponent");if (addressComponent != null) {tbStation.setProvince(addressComponent.getString("province"));tbStation.setCity(addressComponent.getString("city"));tbStation.setDistrict(addressComponent.getString("district"));tbStation.setTownship(addressComponent.getString("town"));tbStation.setStreet(addressComponent.getString("street"));}JSONArray jsonObjectList = locationObject.getJSONArray("pois");if (jsonObjectList.size() > 0) {int i = 0;JSONObject jsonHouse = jsonObjectList.getJSONObject(i);while (isNumeric(jsonHouse.getString("name").substring(0, 1))) {jsonHouse = jsonObjectList.getJSONObject(i++);}JSONObject poiLatlng = jsonHouse.getJSONObject("point");tbStation.setLat(poiLatlng.getString("y"));tbStation.setLng(poiLatlng.getString("x"));tbStation.setHouse(jsonHouse.getString("name"));tbStation.setDistance(jsonHouse.getString("distance"));tbStation.setLocation(jsonHouse.getString("location"));tbStation.setKindType(jsonHouse.getString("poiType"));tbStation.setTag(jsonHouse.getString("tag"));tbStation.setAddress(jsonHouse.getString("addr"));} else {tbStation.setHouse("附近无POI");tbStation.setAddress(locationObject.getString("formatted_address"));}} else {log.error("===>调用地图api失败<=====,返回消息:{}", res);}} catch (Exception e) {log.error("getBaiDuCoding error ---------- " + e.getMessage());}return tbStation;}