json 解析 ---Gps坐标转百度地图坐标

来源:互联网 发布:手机上怎么装修淘宝店 编辑:程序博客网 时间:2024/05/22 15:48
在开发过程中,遇到了通过gps获取地理位置,然后需要在百度地图上显示,但是通过gps获取到的坐标跟百度地图上的坐标是有差别的,具体差异,可以去百度一下,这里就不做详细的解释,百度地图也提供了相应的转换方式,这里提供的是通过Java代码实现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坐标转百度地图坐标的全部过程。

0 0
原创粉丝点击