json 解析 ---Gps坐标转百度地图坐标
2015-10-01 23:01
696 查看
在开发过程中,遇到了通过gps获取地理位置,然后需要在百度地图上显示,但是通过gps获取到的坐标跟百度地图上的坐标是有差别的,具体差异,可以去百度一下,这里就不做详细的解释,百度地图也提供了相应的转换方式,这里提供的是通过Java代码实现gps坐标转换成百度地图坐标的方法。
多了不说,看代码。
工具类
测试类 测试方法
所需要的实体类
以上就是gps坐标转百度地图坐标的全部过程。
多了不说,看代码。
工具类
import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.net.HttpURLConnection; import java.net.URL; import java.util.HashMap; import java.util.List; import java.util.Map; import com.xzw.entity.loction; import net.sf.json.JSONArray; import net.sf.json.JSONObject; public class JsonUtil { // 通过url返回json数据 public static String getJsonForUrl(String URL) throws IOException { String getURL = URL; URL getUrl = new URL(getURL); HttpURLConnection connection = (HttpURLConnection) getUrl.openConnection(); connection.connect(); // 取得输入流,并使用Reader读取 BufferedReader reader = new BufferedReader(new InputStreamReader(connection.getInputStream(), "utf-8")); StringBuffer sb = new StringBuffer(); String line = ""; while ((line = reader.readLine()) != null) { sb.append(line); } reader.close(); String jsonString = sb.toString(); // 截取json字符串 connection.disconnect(); return jsonString; } //通过多态构造url //坐标转换 gps 转 百度地图坐标 public static String setUrl(List<loction> object){ String Ak="XHDPar7ajC4hcnQZS5DPimj1"; StringBuffer sb=new StringBuffer(); for(loction o:object){ sb=sb.append(o.getLon()+","+o.getLat()+";"); } String COORDS=sb.toString().substring(0,sb.toString().length()-1); String URL="http://api.map.baidu.com/geoconv/v1/?coords="+COORDS+"&from=1&to=5&ak="+Ak; return URL; } /*//解析jsonString gps转百度坐标 (单个坐标解析) public static Map<String, String> getMapLocation(String jsonString){ Map<String , String > map= new HashMap<String, String> (); String result = JSONObject.fromObject(jsonString).getString("result"); JSONArray resultJsonArray=JSONArray.fromObject(result); JSONObject reslutObject=resultJsonArray.getJSONObject(0); String x=reslutObject.getString("x"); String y=reslutObject.getString("y"); map.put("x", x); map.put("y", y); return map; }*/ // 解析jsonString gps转百度坐标 批量解析 public static Map<String, loction> getMapLocation(String jsonString){ Map<String , loction > map= new HashMap<String, loction> (); String result = JSONObject.fromObject(jsonString).getString("result"); JSONArray resultJsonArray=JSONArray.fromObject(result); loction lo=new loction(); for(int i=0;i<resultJsonArray.size();i++ ){ JSONObject reslutObject=resultJsonArray.getJSONObject(i); String x=reslutObject.getString("x"); String y=reslutObject.getString("y"); lo.setLat(y); lo.setLon(x); map.put("loction"+i, lo); } return map; } }
测试类 测试方法
@Test //gps坐标转换成百度地图坐标 public void gpsToMap() throws IOException { String lon="114.21892734521"; String lat="29.575429778924"; loction lo=new loction(); lo.setLat(lat); lo.setLon(lon); loction lo2=new loction(); lo2.setLat(lat); lo2.setLon(lon); List<loction> lolist=new ArrayList<>(); lolist.add(lo); lolist.add(lo2); String url=JsonUtil.setUrl(lolist); String jsonString =JsonUtil.getJsonForUrl(url); Map<String, loction> loMap= JsonUtil.getMapLocation(jsonString); }
所需要的实体类
public class loction { private String lon; private String lat; public String getLon() { return lon; } public void setLon(String lon) { this.lon = lon; } public String getLat() { return lat; } public void setLat(String lat) { this.lat = lat; } }
以上就是gps坐标转百度地图坐标的全部过程。
相关文章推荐
- C#解析xml/json/excel
- JS对象入门
- 网页常用JavaScript代码
- 如何将servlet中读取的数据转化为JSON
- NW.js的简单使用
- Jsp自定义标签Demo
- javascript快速入门
- jsp版文件上传
- jsp实现新闻内容或超长文章的分页
- jsonkit 分解nsarray 时刻 一个错误
- javascript中判断对象类型
- JavaScript跨域总结与解决办法
- javascript中的Array对象 —— 数组的合并、转换、迭代、排序、堆栈
- js 预加载
- JavaScript之浏览器兼容问题
- javaScript 编程题
- DisJSet:食物链(POJ 1182)
- JavaScript变量
- 理解JavaScript中的闭包
- Extjs 4.2 右键菜单树节点(,选择逆,废除)