`
qll3609120
  • 浏览: 57107 次
社区版块
存档分类
最新评论

关于GPS坐标与百度坐标相互转换的方法与问题

阅读更多

做了一个项目的gis开发这块 突然想把遇到的一些问题及解决办法分享记录下来 关于GPS坐标与百度坐标相互转换的方法与问题 网上看了很多人写的博客 所以我想结合自己的想法分享 坐标转换注意问题 一:GPS坐一:标转百度坐标

       方法一:

首先引入一个js文件:

<script type="text/javascript" src="http://developer.baidu.com/map/jsdemo/demo/convertor.js"></script>

<script type="text/javascript" src="http://developer.baidu.com/map/jsdemo/demo/convertor.js"></script>

引入这个js文件的目的调用这个方法: BMap.Convertor.translate(gpsPoint,0,translateCallback); 百度地图提供的translate方法。其中参数gpspoint代表真实的gps坐标,0表示类型代表GPS(2代表google 4代表百度), translateCallback回调函数。下面举个例子

                         var gps_x =120.8484309 ,gps_y=30.0998883;//GPS坐标

                         /**GPS转换为百度坐标*/

                         function translate(){

                               BMap.Convertor.translate(new BMap.Point(gps_x,gps_y),0,function(point){

                                                      var marker = new BMap.Marker(point);

                                                       map.addOverlay(marker);

                             });

                         }

上面的function(point) 就是回调函数 translateCallback; point是回调函数返回的值也就是表示 GPS转为百度坐标时的point

       方法二: 下面是我的个人理解 就是如果在回调函数里面牵涉到与后台的数据交互 可能就会出现问题 例如数据无法存入数据库 或者数据刷新不上来 这个时候我们可以尝试下面这个方法:使用HTTP请求方法转换GPS坐标获取结果(此方法适用于从后台数据库获取gps坐标后转换为百度坐标传到前台进行操作)

一个小技巧 下面类里面的请求地址即http://api.map.baidu.com/ag/coord/convert?from=0&to=4&x="+lng+"+&y="+lat+"&callback=BMap.Convertor.cbk_7594 我们可以替换里面的lng和lat为某个数值例如lng为116.397428 lat为39.90923 然后再浏览器里面打开这个地址 我们就会获取一个返回的字符串 如下

BMap.Convertor.cbk_7594&&BMap.Convertor.cbk_7594({"error":0,"x":"MTE2LjQxMDA0OTUwNTY2","y":"MzkuOTE2OTc5NTE5ODcz"})

    这样我们就可以很清晰的发现返回数据的格式和结果即x 和 y的值

public class Gps2Baidu{

      public static String translate(String lng,String lat){

          //请求地址
        String path = "http://api.map.baidu.com/ag/coord/convert?from=0&to=4&x="+lng+"+&y="+lat+"&callback=BMap.Convertor.cbk_7594";
        try
        {
            //使用http请求获取转换结果
            URL url = new URL(path);
            //获取连接conn
            HttpURLConnection conn = (HttpURLConnection) url.openConnection();
            //设置请求的方式
            conn.setRequestMethod("GET");
            //设置请求的过期时间
            conn.setConnectTimeout(5 * 1000);
            
            //读取conn返回的数据流
            InputStream inStream = conn.getInputStream();
            //输出流
            ByteArrayOutputStream outStream = new ByteArrayOutputStream();
            byte[] buffer = new byte[1024];
            int len = 0;
            //写入操作
            while ((len = inStream.read(buffer)) != -1)
            {
                outStream.write(buffer, 0, len);
            }
            //得到返回的结果
            String res = outStream.toString();
            //判断返回结果的格式
            if (res.indexOf("(") > 0 && res.indexOf(")") > 0)
            {
                //截取返回字符串游泳的部分即'('与')'之间的数据
                String str = res.substring(res.indexOf("(") + 1, res.indexOf(")"));
                //获取 参数error的值
                String err = res.substring(res.indexOf("error") + 7, res.indexOf("error") + 8);
                //error=0
                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")));
                    return (x1 + "," + y1);
                }
            }
            } catch (Exception e)
            {
                e.printStackTrace();
            }
            return null;
        }                             

}

 

二:百度坐标转为GPS坐标  这个百度地图并没有提供相应的方法          我们可以试用一下方法

          ① 对百度地图坐标 bd_x bd_y 进行一次 BMap.Convertor.translate 获取一个新的bd_x1 bd_y1

          ②利用以下公式 gps_x = 2*bd_x-bd_x1; gps_y =2*bd_y-bd_y1 获取 GPS坐标  不信可以去试试 误差很少

 三:java  google转百度坐标

/**

* google经纬度转换成百度经纬度 纬度转换

* @param longitude

* @return

*/

private static String googlePoint2BdMapLat(double lng,double lat){

double x = lng, y = lat;

double z =Math.sqrt(x * x + y * y) + 0.00002 * Math.sin(y * x_pi);

double theta = Math.atan2(y, x) + 0.000003 * Math.cos(x * x_pi);

lng = z * Math.cos(theta) + 0.0065;

lat = z * Math.sin(theta) + 0.006;

return String.valueOf(lat);

}

分享到:
评论
1 楼 njoiop 2014-12-03  
不错!不过我知道现在可以用接口纠偏了,我试过这个网站的,还行.http://www.haoservice.com/docs/15

相关推荐

    百度坐标批量转换为GPS坐标

    本篇文章将详细探讨“百度坐标批量转换为GPS坐标”的知识点,以及如何通过第三方接口实现这一过程。 首先,了解百度坐标和GPS坐标体系的区别至关重要。百度坐标,又称BD-09坐标,是中国地图服务商百度采用的一种...

    GPS坐标转换为百度地图坐标(JS)

    通过引入百度地图的JS库,我们可以直接调用`BMap.Convertor.translate`方法进行坐标转换。这个方法接受一个数组参数,包含待转换的坐标点,以及一个回调函数,转换完成后会返回转换后的坐标。代码示例如下: ```...

    C#GPS坐标转百度地图坐标

    本项目"GPS转百度地图坐标"是用C#编程语言实现的一个工具,用于将GPS获取的原始WGS84坐标转换为适合在百度地图上显示的BD09坐标。 首先,我们来了解一些基础概念: 1. **坐标系**:坐标系是地理空间位置的一种数学...

    Gps坐标转换百度坐标

    Gps坐标转换百度坐标

    GPS坐标转换百度坐标js

    本文将详细讨论“GPS坐标转换百度坐标js”的相关知识点,包括GPS坐标系统、百度地图API、JavaScript编程以及批量处理坐标转换的方法。 首先,我们要了解的是GPS坐标系统。全球定位系统(GPS)使用的是WGS84坐标系,...

    Gps坐标系转换Java工具类WGS坐标与Google和百度坐标互转

    例如,当用户的位置信息是从GPS获取的WGS84坐标,但我们需要将其显示在百度地图或Google地图上时,就需要进行坐标转换。此外,对于开发者来说,理解不同坐标系间的转换原理,有助于更好地理解和优化地图服务的性能。...

    GPS坐标转百度坐标java算法

    通过GPS坐标的经纬度,经计算返回一组百度坐标数据,简单方便

    GPS坐标转百度坐标及纠偏

    标题中的“GPS坐标转百度坐标及纠偏”指的是在地理信息系统中,将全球定位系统(GPS)使用的坐标系统转换为百度地图所采用的坐标系统,并对可能出现的坐标偏差进行校正的过程。在地理信息技术中,不同的地图服务商...

    百度坐标转GPS坐标(离线)

    百度坐标转换成GPS坐标,离线转换,不需要通过百度地图,精度可达到米级。同时也提供GPS坐标换成百度坐标。代码简单,自己可转成其他编程语言。

    java GPS坐标系转百度坐标系

    GPS坐标系转换成百度坐标系 经过验证很准确 希望能给你有所帮助。

    gps坐标转百度坐标

    标题中的“GPS坐标转百度坐标”是指在GIS(地理信息系统)中将全球定位系统(GPS)使用的WGS84坐标转换为百度地图所采用的BD-09坐标系统的过程。这是因为不同的地图服务提供商可能使用不同的坐标系统,导致直接在...

    GPS坐标转化百度坐标 实例

    本实例将详细介绍如何将GPS坐标转化为百度坐标。 GPS坐标,即全球定位系统坐标,基于WGS84坐标系,是国际上广泛接受的地球参考坐标系。它由经度、纬度和海拔高度三部分组成,其中经度和纬度通常以十进制度数表示。...

    GPS坐标百度转换.zip-解决限制个数问题

    本主题聚焦于“GPS坐标百度转换.zip”,它解决了一个关键问题:如何批量转换GPS坐标以便在百度地图上准确显示。这个压缩包包含了名为“GPS坐标百度转换.html”的文件,这很可能是使用JavaScript编写的网页应用,用于...

    GPS批量转换百度坐标

    标题中的“GPS批量转换百度坐标”指的是在GIS(地理信息系统)领域中,将大量GPS(全球定位系统)获取的原始WGS84坐标转换为百度地图使用的BD09坐标系的过程。百度地图为了保护其数据安全,采用了自家的加密算法,...

    GPS转百度坐标demo、

    标签“android gps”表明这个问题与Android平台上的GPS功能有关,开发者可能需要获取设备的GPS坐标,并将这些坐标应用到百度地图API中,以在地图上准确地显示位置标记或者进行路线规划。 “GPSConvertBaiDu”这个...

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

    总的来说,"GPS坐标转化为百度地图坐标"是一个涉及到GIS、坐标系统和编程技术的综合性问题。理解和掌握这一过程,对于开发依赖地理位置信息的应用,尤其是针对中国市场的产品,具有重要意义。通过深入研究和实践,...

    GPS坐标转换工具 经纬度XY坐标转换工具 度分秒 经纬度 米 转换工具

    GPS坐标转换工具主要用于将全球定位系统(GPS)获取的经纬度数据转换为不同坐标系下的XY坐标,或者进行度分秒与十进制度之间的转换,以及米制与其它长度单位间的换算。以下是对这些知识点的详细说明: 1. GPS坐标...

    GPS坐标转换成百度坐标的方法_GCJ-02_BD-09_WGS_GPS_

    在标题"GPS坐标转换成百度坐标的方法"中,涉及到了几个关键的坐标系统:GPS、GCJ-02、BD-09以及WGS-84。这些坐标系统在不同的场景下有不同的应用,下面将详细讲解它们之间的关系和转换方法。 首先,GPS(全球定位...

    GPS经纬度坐标与XY坐标相互转换的python程序

    包含:GPS经纬度转XY坐标和XY坐标转GPS经纬度和函数调用示例。坐标转换具有较高的精度。

    GPSConvertBaiDu_java_GPS转百度_DEMO_百度坐标_

    总的来说,理解并掌握GPS到百度坐标转换的原理和方法对于使用百度地图API的开发者来说至关重要。通过“GPSConvertBaiDu”这个Java DEMO,我们可以学习如何在代码中实现这种转换,进一步提升我们的GIS开发能力。同时...

Global site tag (gtag.js) - Google Analytics