您的位置:首页 > 其它

高德坐标转百度坐标

2015-12-16 00:00 141 查看
摘要: 高德地图转百度地图

public class GeoConvertUtil {

private static final String BAIDU_AK = "EF06cfb26173665ad80b8edf6a328192";
private static final String REQUEST_TO = "http://api.map.baidu.com/geoconv/v1/";

/**
* 高德坐标转换为百度坐标
* @param geos 参数为JSONObject 内容为{"lng":"纬度坐标值","lat":"经度坐标值"}
* @return
*/
public static List<JSONObject> mapAbcToBaidu(List<JSONObject> geos){
List<JSONObject> baiduCoords = new ArrayList<JSONObject>();
int i = 1;
List<JSONObject> coords = new ArrayList<JSONObject>();
for(JSONObject coord : geos){
coords.add(coord);
if(i % 100 == 0){
baiduCoords.addAll(coordConvert(coords));
coords.clear();
}
i++;
}
if(coords.size() > 0){
baiduCoords.addAll(coordConvert(coords));
}
return baiduCoords;
}

/**
* 调用百度坐标转换API
* 调用百度API
* @param geos
* @return
*/
public static List<JSONObject> coordConvert(List<JSONObject> geos){
//构造百度API使用的参数
List<String[]> paramList = getParamList(geos);
List<JSONObject> rgeos = new ArrayList<JSONObject>();
try {
HttpPostUtil post = new HttpPostUtil(REQUEST_TO);
for(String[] param : paramList){
post.addUrlParams(param[0], param[1]);
}
byte[] b = post.toGet();
String result = new String(b);
rgeos = parseResult(result);
} catch (Exception e) {
e.printStackTrace();
}
return rgeos;
}

/**
* 构造百度坐标转换API参数
* @param geos
* @return
*/
private static List<String[]> getParamList(List<JSONObject> geos){
StringBuffer coords = new StringBuffer();
int i = 0;
for(JSONObject coord : geos){
if(i > 0){
coords.append(";");
}
coords.append(coord.optString("lng") + "," + coord.optString("lat"));
i++;
}
List<String[]> paramList = new ArrayList<String[]>();
paramList.add(new String[]{"coords", coords.toString()});
//3:google地图、soso地图、aliyun地图、mapabc地图和amap地图所用坐标
paramList.add(new String[]{"from", "3"});
//5:百度地图采用的经纬度坐标
paramList.add(new String[]{"to", "5"});
paramList.add(new String[]{"ak", BAIDU_AK});
return paramList;
}

/**
* 解析百度坐标转换API返回结果
* @param result
* @return
*/
private static List<JSONObject> parseResult(String result){
List<JSONObject> geos = new ArrayList<JSONObject >();
JSONObject jo = JSONObject.fromObject(result);
JSONArray ja = jo.getJSONArray("result");
Iterator<JSONObject> it = ja.iterator();
JSONObject c = null;
JSONObject geo = null;
while(it.hasNext()){
c = it.next();
geo = new JSONObject();
geo.put("lng",c.getString("x"));
geo.put("lat",c.getString("y"));
geos.add(geo);
}
return geos;
}

/**
* 测试坐标转换用main方法,也可用于手动转换
* @param args
*/
public static void main(String[] args) {
List<JSONObject> geos = new ArrayList<JSONObject>();
//geos.add(new String[]{"116.37375966825", "39.916532509995"});
//geos.add(new String[]{"116.37495056905", "39.916548967599"});

geos.add(JSONObject.fromObject("{'lng':'114.28460988824','lat':'30.620924336021'}"));
geos.add(JSONObject.fromObject("{'lng':'121.4134989786','lat':'31.186794727154'}"));
geos.add(JSONObject.fromObject("{'lng':'121.41450480698','lat':'31.179160332016'}"));
geos.add(JSONObject.fromObject("{'lng':'121.41615101277','lat':'31.174365860427'}"));
geos.add(JSONObject.fromObject("{'lng':'121.41247336894','lat':'31.17366677785'}"));
geos.add(JSONObject.fromObject("{'lng':'121.41451302126','lat':'31.16483485802'}"));
geos.add(JSONObject.fromObject("{'lng':'121.41871931172','lat':'31.166950574645'}"));
geos.add(JSONObject.fromObject("{'lng':'121.41904176354','lat':'31.164641350679'}"));
geos.add(JSONObject.fromObject("{'lng':'121.43412499371','lat':'31.165531664174'}"));
geos.add(JSONObject.fromObject("{'lng':'121.43410201768','lat':'31.164768898322'}"));
geos.add(JSONObject.fromObject("{'lng':'121.44503014655','lat':'31.166864246951'}"));
geos.add(JSONObject.fromObject("{'lng':'121.44746232396','lat':'31.168914731198'}"));
geos.add(JSONObject.fromObject("{'lng':'121.45030219714','lat':'31.169441299021'}"));
geos.add(JSONObject.fromObject("{'lng':'121.45266283443','lat':'31.170961262439'}"));
geos.add(JSONObject.fromObject("{'lng':'121.45112919761','lat':'31.17233500696'}"));
geos.add(JSONObject.fromObject("{'lng':'121.45231054304','lat':'31.172870155919'}"));
geos.add(JSONObject.fromObject("{'lng':'121.45288855909','lat':'31.176164461144'}"));
geos.add(JSONObject.fromObject("{'lng':'121.45194701991','lat':'31.17956299175'}"));
geos.add(JSONObject.fromObject("{'lng':'121.45295812889','lat':'31.182337245676'}"));
geos.add(JSONObject.fromObject("{'lng':'121.45704288176','lat':'31.184918526054'}"));
geos.add(JSONObject.fromObject("{'lng':'121.4641531664','lat':'31.187674123116'}"));
geos.add(JSONObject.fromObject("{'lng':'121.45852506418','lat':'31.196937983189'}"));
geos.add(JSONObject.fromObject("{'lng':'121.46494920099','lat':'31.199218955344'}"));
geos.add(JSONObject.fromObject("{'lng':'121.46426133749','lat':'31.200809094106'}"));
geos.add(JSONObject.fromObject("{'lng':'121.45651987328','lat':'31.200034889299'}"));
geos.add(JSONObject.fromObject("{'lng':'121.45564486414','lat':'31.201463164831'}"));
geos.add(JSONObject.fromObject("{'lng':'121.4447654891','lat':'31.197108328816'}"));
geos.add(JSONObject.fromObject("{'lng':'121.44309179067','lat':'31.200038150336'}"));
geos.add(JSONObject.fromObject("{'lng':'121.43694416761','lat':'31.19833349623'}"));
geos.add(JSONObject.fromObject("{'lng':'121.43433974265','lat':'31.196730909817'}"));
geos.add(JSONObject.fromObject("{'lng':'121.4318855214','lat':'31.192494306927'}"));
geos.add(JSONObject.fromObject("{'lng':'121.42403737783','lat':'31.195162712013'}"));

List<JSONObject> list = mapAbcToBaidu(geos);
for(JSONObject arr : list){
System.out.println("new BMap.Point(" + arr.optString("lng") + "," + arr.optString("lat") + ");");
}
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: