前言:
自己申请一个百度地图得账号,然后创建自己需要服务拿到Ak
下载地址:登录百度帐号 https://lbsyun.baidu.com/apiconsole/key
1.第一步:申请账号,这一步大家都会就不做太多介绍了
2.第二步:创建ak,
3.第三步:创建ak,拿到ak并保存下来,别让其他人用了
4.干货来了!!!!导入http得依赖,通过地址拿到经纬度
/**
* @Description: <百度开发者>在百度地图开发文档申请的key,目前是我私人的
* @Author: xy丶
*/
// @Value("${baidu.ak}")
//private String ak;
final static String AK = "edGc5mIugVxx7********o"; 这里是刚创建得自己得AK
/**
* @Description: 地理位置编码
* @Author: xy丶
*/
//@Value("${baidu.url}")
//private String url;
final static String ADDRESS_TO_LONGITUDEA_URL = "http://api.map.baidu.com /geocoding/v3/?output=json&location=showLocation";
/**
* @Description: 地理位置编码
* @Author: xy丶
* @retur: 返回地理位置信息
*/
@GetMapping("addressApi")
public ApiResultVO AddressTolongitudea(String address) {
if(Strings.isBlank(address)){
log.info("请输入地址");
return null;
}
String httpUrl = ADDRESS_TO_LONGITUDEA_URL + "&ak=" + AK + "&address="+ address;
log.info("请求url:" + httpUrl);
// 创建默认http连接
HttpClient client = HttpClients.createDefault();
// 创建一个post请求
HttpPost post = new HttpPost(httpUrl);
try {
// 用http连接去执行get请求并且获得http响应
HttpResponse response = client.execute(post);
// 从response中取到响实体
HttpEntity entity = response.getEntity();
log.info("响应实体:"+entity);
// 把响应实体转成文本
String html = EntityUtils.toString(entity);
log.info("返回信息:" + html);
// JSON转对象
return JSON.parseObject(html, ApiResultVO.class);
} catch (Exception e) {
log.error("地理编码[异常],", e);
return null;
}
}
返回结果:
{
"status": "0",
"result": {
"level": "村庄",
"confidence": "50",
"location": {
"lng": "105.0006026218481",
"lat": "29.645771323452065"
},
"precise": "0",
"comprehension": "57"
}
}
5.通过经纬度,拿到具体得地址
/**
* 逆地理编码 URL
*/
//@Value("${baidu.rurl}")
private String rurl;
final static String LONGITUDE_TO_ADDRESS_URL = "http://api.map.baidu.com/reverse_geocoding/v3/?output=json&coordtype=BD09&pois=1";
/**
* 逆地理编码
* @param lat
* 纬度 23.1067,
* @param lng
* 经度 113.325
* @return
*/
@GetMapping("/reverseGeography")
public ReverseGeography longitudeToAddress(float lat, float lng) {
//拼接请求路径
String url = LONGITUDE_TO_ADDRESS_URL + "&ak=" + ak + "&location=" + lat + "," + lng;
log.info("请求url:" + url);
// 创建默认http连接
HttpClient client = HttpClients.createDefault();
// 创建一个post请求
HttpPost post = new HttpPost(url);
try {
// 用http连接去执行get请求并且获得http响应
HttpResponse response = client.execute(post);
// 从response中取到响实体
HttpEntity entity = response.getEntity();
// 把响应实体转成文本
String html = EntityUtils.toString(entity);
log.info("返回信息:" + html);
// JSON转对象
return JSON.parseObject(html, ReverseGeography.class);
} catch (Exception e) {
log.error("逆地理编码[异常],", e);
return null;
}
}
返回结果
返回结果: