声明:本人是在实习项目的时候遇到的问题
一.使用Api分为四步骤全球逆地理编码 rgc 反geo检索 | 百度地图API SDK
步骤1,2自行完成 接下来去获取AK
二.申请AK
登录百度账号
点击创建应用,选择自己想用的服务,我只单选了逆地理编码,默认全选也是可以。
ip白名单自行设置,嫌麻烦可以设置为0.0.0.0/0,点击提交后拿到自己的AK
三.编写java代码
@Data
@Component
public class BaiduMapsUtils {
private static final String API_KEY = "uCrrxBDB4bl76vh9B7F3vYfn3OVujUVd";
private static final String REVERSE_GEOCODING_URL = "http://api.map.baidu.com/reverse_geocoding/v3/?ak=" + API_KEY + "&location=%s,%s&output=json";
public static JsonNode reverseGeocode(Double latitude, Double longitude) throws Exception {
String urlString = String.format(REVERSE_GEOCODING_URL, latitude, longitude);
URL url = new URL(urlString);
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setRequestMethod("GET");
connection.setRequestProperty("Accept", "application/json");
if (connection.getResponseCode() == HttpURLConnection.HTTP_OK) {
BufferedReader in = new BufferedReader(new InputStreamReader(connection.getInputStream()));
String inputLine;
StringBuilder response = new StringBuilder();
while ((inputLine = in.readLine()) != null) {
response.append(inputLine);
}
in.close();
connection.disconnect();
ObjectMapper objectMapper = new ObjectMapper();
JsonNode jsonNode = objectMapper.readTree(response.toString());
return jsonNode;
} else {
return null;
}
}
}
@RequestMapping("/api/index/positioning")
public R getPositioning(@RequestParam(value = "longitude") Double longitude,
@RequestParam(value = "latitude") Double latitude){
JsonNode jsonNode = null;
try{
jsonNode = BaiduMapsUtils.reverseGeocode(longitude, latitude);
}catch (Exception e){
log.error("百度地图接口异常",e);
}
return R.data(jsonNode);
}
简单编写了一段代码,代码不是唯一的,测试正常。
详细请看百度地图官方文档:全球逆地理编码 rgc 反geo检索 | 百度地图API SDK
如果发现使用你的AK取调用某个API的时候报错:{"status":240,"message":"APP 服务被禁用"},请查看 API服务地址 是否拼接正确,因为原地址编码已经停止维护,使用其他文章可能URL拼接会有问题,最新文档地址是:
https://api.map.baidu.com/reverse_geocoding/v3/?ak=您的ak&output=json&coordtype=wgs84ll&location=31.225696563611,121.49884033194
//GET请求
文章均为学习整理笔记,分享记录为主,如有错误请指正,共同学习进步。