package com.test;
import java.io.ByteArrayOutputStream;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import com.sun.org.apache.xerces.internal.impl.dv.util.Base64;
import net.sf.json.JSONObject;
/**
*
* GPS坐标转换为百度地图坐标
*
* 需要引入javabase64.jar 和json的一些包
*
*
*/
public class Gps2BaiDu{
public static void main(String[] args){
//double[] point = {116.397428,39.90923};
//double[] point = {116.22086253027975,39.814208387302884};
double[] point = {116.17551809501853,39.782281854888474};
point = convertGpsToBD(point);
System.out.println("x==>"+point[0]+"*y==>"+point[1]);
//116.23350842009 39.821107971198
}
public static String convertGpsToBD(String[] pointStr){
double[] gpspoint = new double[pointStr.length];
for(int k=0; k<pointStr.length; k++){
gpspoint[k] = Double.parseDouble(pointStr[k]);
}
double[] bdpoint = convertGpsToBD(gpspoint);
String bdpointStr = "";
bdpointStr += String.valueOf(bdpoint[0])+" "+String.valueOf(bdpoint[1]);
return bdpointStr;
}
public static double[] convertGpsToBD(double[] point){
double[] bdpoint = new double[2];
// 转换前的GPS坐标
/*
* double x = 116.397428;
*
* double y = 39.90923;
*/
// google 坐标转百度链接
// //http://api.map.baidu.com/ag/coord/convert?from=2&to=4&x=116.32715863448607&y=39.990912172420714&callback=BMap.Convertor.cbk_3694
// http://api.map.baidu.com/ag/coord/convert?from=0&to=4&x=116.397428&y=39.90923&callback=BMap.Convertor.cbk_7594
// gps坐标的type=0
// google坐标的type=2
// baidu坐标的type=4
String path = "http://api.map.baidu.com/ag/coord/convert?from=0&to=4&x="
+ point[0]
+ "+&y="
+ point[1]
+ "&callback=BMap.Convertor.cbk_7594";
try{
// 使用http请求获取转换结果
URL url = new URL(path);
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setRequestMethod("GET");
conn.setConnectTimeout(30000);
conn.setReadTimeout(30000);
// 设置是否向httpUrlConnection输出,因为这个是post请求,参数要放在
// http正文内,因此需要设为true, 默认情况下是false;
conn.setDoOutput(true);
// 设置是否从httpUrlConnection读入,默认情况下是true;
conn.setDoInput(true);
InputStream inStream = conn.getInputStream();
ByteArrayOutputStream outStream = new ByteArrayOutputStream();
byte[] buffer = new byte[4096];
int len = 0;
while ((len = inStream.read(buffer)) != -1){
outStream.write(buffer, 0, len);
}
// 得到返回的结果
String res = outStream.toString();
//System.out.println(res);
outStream.flush();
outStream.close();
inStream.close();
// 处理结果
if (res.indexOf("(") > 0 && res.indexOf(")") > 0){
String str = res.substring(res.indexOf("(") + 1,
res.indexOf(")"));
String err = res.substring(res.indexOf("error") + 7,
res.indexOf("error") + 8);
if ("0".equals(err)){
JSONObject js = JSONObject.fromObject(str);
// 编码转换
String x1 = new String(Base64.decode(js.getString("x")));
String y1 = new String(Base64.decode(js.getString("y")));
//System.out.println(x1 + " " + y1);
bdpoint[0] = Double.parseDouble(x1);
bdpoint[1] = Double.parseDouble(y1);
}
}
}
catch (Exception e){
e.printStackTrace();
}
finally{
}
return bdpoint;
}
}
import java.io.ByteArrayOutputStream;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import com.sun.org.apache.xerces.internal.impl.dv.util.Base64;
import net.sf.json.JSONObject;
/**
*
* GPS坐标转换为百度地图坐标
*
* 需要引入javabase64.jar 和json的一些包
*
*
*/
public class Gps2BaiDu{
public static void main(String[] args){
//double[] point = {116.397428,39.90923};
//double[] point = {116.22086253027975,39.814208387302884};
double[] point = {116.17551809501853,39.782281854888474};
point = convertGpsToBD(point);
System.out.println("x==>"+point[0]+"*y==>"+point[1]);
//116.23350842009 39.821107971198
}
public static String convertGpsToBD(String[] pointStr){
double[] gpspoint = new double[pointStr.length];
for(int k=0; k<pointStr.length; k++){
gpspoint[k] = Double.parseDouble(pointStr[k]);
}
double[] bdpoint = convertGpsToBD(gpspoint);
String bdpointStr = "";
bdpointStr += String.valueOf(bdpoint[0])+" "+String.valueOf(bdpoint[1]);
return bdpointStr;
}
public static double[] convertGpsToBD(double[] point){
double[] bdpoint = new double[2];
// 转换前的GPS坐标
/*
* double x = 116.397428;
*
* double y = 39.90923;
*/
// google 坐标转百度链接
// //http://api.map.baidu.com/ag/coord/convert?from=2&to=4&x=116.32715863448607&y=39.990912172420714&callback=BMap.Convertor.cbk_3694
// http://api.map.baidu.com/ag/coord/convert?from=0&to=4&x=116.397428&y=39.90923&callback=BMap.Convertor.cbk_7594
// gps坐标的type=0
// google坐标的type=2
// baidu坐标的type=4
String path = "http://api.map.baidu.com/ag/coord/convert?from=0&to=4&x="
+ point[0]
+ "+&y="
+ point[1]
+ "&callback=BMap.Convertor.cbk_7594";
try{
// 使用http请求获取转换结果
URL url = new URL(path);
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setRequestMethod("GET");
conn.setConnectTimeout(30000);
conn.setReadTimeout(30000);
// 设置是否向httpUrlConnection输出,因为这个是post请求,参数要放在
// http正文内,因此需要设为true, 默认情况下是false;
conn.setDoOutput(true);
// 设置是否从httpUrlConnection读入,默认情况下是true;
conn.setDoInput(true);
InputStream inStream = conn.getInputStream();
ByteArrayOutputStream outStream = new ByteArrayOutputStream();
byte[] buffer = new byte[4096];
int len = 0;
while ((len = inStream.read(buffer)) != -1){
outStream.write(buffer, 0, len);
}
// 得到返回的结果
String res = outStream.toString();
//System.out.println(res);
outStream.flush();
outStream.close();
inStream.close();
// 处理结果
if (res.indexOf("(") > 0 && res.indexOf(")") > 0){
String str = res.substring(res.indexOf("(") + 1,
res.indexOf(")"));
String err = res.substring(res.indexOf("error") + 7,
res.indexOf("error") + 8);
if ("0".equals(err)){
JSONObject js = JSONObject.fromObject(str);
// 编码转换
String x1 = new String(Base64.decode(js.getString("x")));
String y1 = new String(Base64.decode(js.getString("y")));
//System.out.println(x1 + " " + y1);
bdpoint[0] = Double.parseDouble(x1);
bdpoint[1] = Double.parseDouble(y1);
}
}
}
catch (Exception e){
e.printStackTrace();
}
finally{
}
return bdpoint;
}
}