高德坐标转百度坐标
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") + ");"); } } }
相关文章推荐
- 区间选点问题(贪心)
- java对象与Map互转
- java对象的一些基本操作,复制对象,判断是否为基本数据类型等
- 读取文件
- 流读成字符串和字节数组
- 将java集合转换成map
- Gson详解:Java对象与JSON相互转换的利器
- 重要的是坚持
- Sublime Text 学习笔记
- ios端与java之间的RSA算法加密
- JavaScript节点
- JS的事件监听机制
- 用Kettle的一套流程完成对整个数据库迁移
- 怎样将iMindMap中导图以表格形式导出
- ios GCD多线程
- DIY 微信HD版共享
- Node.js开发指南 学习日志 3.3.3创建包
- hosts2015-12-16
- 批量修改扩展名
- servlet