39 lines
1.4 KiB
Java
39 lines
1.4 KiB
Java
|
package com.zcloud.common.utils;
|
|||
|
|
|||
|
import com.alibaba.fastjson.JSONObject;
|
|||
|
|
|||
|
/**
|
|||
|
* 百度地图工具类
|
|||
|
*/
|
|||
|
public class BaiduMapUtil {
|
|||
|
// 需替换为实际的百度地图AK(从配置中心获取更佳)
|
|||
|
private static final String BAIDU_AK = "OElqFYoKiAH8KFtph8ftLKF5NlNrbCUr";
|
|||
|
|
|||
|
/**
|
|||
|
* 根据经纬度获取详细地址
|
|||
|
* @param lng 经度
|
|||
|
* @param lat 纬度
|
|||
|
* @param coordtype 坐标系类型(wgs84ll/gcj02等)
|
|||
|
* @return 格式化地址
|
|||
|
*/
|
|||
|
public static String getAddressByLocation(double lng, double lat, String coordtype) throws Exception {
|
|||
|
String url = String.format(
|
|||
|
"http://api.map.baidu.com/reverse_geocoding/v3/?ak=%s&output=json&coordtype=%s&location=%s,%s",
|
|||
|
BAIDU_AK, coordtype, lat, lng); // 注意百度坐标系是纬度在前
|
|||
|
|
|||
|
String response = HttpRequestUtil.doGet(url);
|
|||
|
JSONObject result = JSONObject.parseObject(response);
|
|||
|
|
|||
|
if (result.getInteger("status") == 0) {
|
|||
|
return result.getJSONObject("result")
|
|||
|
.getString("formatted_address");
|
|||
|
}
|
|||
|
throw new RuntimeException("地址解析失败:" + result.getString("message"));
|
|||
|
}
|
|||
|
|
|||
|
// 方法重载(默认使用wgs84坐标系)
|
|||
|
public static String getAddressByLocation(double lng, double lat) throws Exception {
|
|||
|
return getAddressByLocation(lng, lat, "wgs84ll");
|
|||
|
}
|
|||
|
}
|