您的位置:首页 > Web前端 > JavaScript

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

2015-10-01 23:01 696 查看
在开发过程中,遇到了通过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坐标转百度地图坐标的全部过程。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: