import net.sf.json.JSONObject;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* 高德地图工具类
*/
public class GouldMapUtil {
public static class GouldMap{
private Double latitude;//纬度
private Double longitude;//经度
public Double getLatitude() {
return latitude;
}
public void setLatitude(Double latitude) {
this.latitude = latitude;
}
public Double getLongitude() {
return longitude;
}
public void setLongitude(Double longitude) {
this.longitude = longitude;
}
}
/**
* 通过地址、城市获取经纬度
* @param address
* @param city
* @param poId
* @return
*/
public static GouldMap getMap(String address, String city, String poId) {
//AddressMapKey 请自行去高德申请
String key ="29087623465hjkljjklhg95386a1";
String url = "https://restapi.amap.com/v3/geocode/geo?parameters";
Map<String, Object> requestMap = new HashMap<>();//todo 参数按照字母顺序排列
address = address.replace(" ", "").replace("(","(").replace(")",")").replace("\t","");
requestMap.put("address", address);
requestMap.put("city", city.replace(" ", ""));
String parms = HttpSender.getInstance().formatGet("", requestMap);
String sign = MD5Util.sign(parms);
requestMap.put("key", key);
requestMap.put("sig", sign);
String parameter = HttpSender.getInstance().formatGetParameter("", requestMap);
String responseJson = null;
String getUrl = url + parameter;
try {
responseJson = HttpSender.getInstance().get(getUrl);
} catch (Exception e) {
System.out.println("地址解析异常:" + poId);
}
if (StringUtil.isEmpty(responseJson)) {
return null;
}
return getMapByResult(responseJson);
}
public static GouldMap getMapByResult(String responseJson){
GouldMap tencentMap = new GouldMap();
Map<String, Object> stringObjectMap = JsonUtilGjson.parseJSON2Map(responseJson);
if (stringObjectMap.get("info").equals("OK")) {
List result = (List) stringObjectMap.get("geocodes");
if(result.size()==0){
return null;
}
Map map = (Map) result.get(0);
String locationMap = map.get("location").toString();
String[] split = locationMap.split(",");
Double lng = Double.valueOf(split[0]);
Double lat = Double.valueOf(split[1]);
if (lng == 0 || lat == 0) {
return null;
}
tencentMap.setLongitude(lng);
tencentMap.setLatitude(lat);
return tencentMap;
}
return null;
}
}
网友评论