您的位置:首页 > 其它

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

2015-11-29 08:11 405 查看
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;

    }

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: