GPS坐标转换为百度地图坐标

来源:互联网 发布:封神演义 知乎 编辑:程序博客网 时间:2024/04/17 02:51
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;
    }

}
0 0
原创粉丝点击