做了一个项目的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);
}
相关推荐
本篇文章将详细探讨“百度坐标批量转换为GPS坐标”的知识点,以及如何通过第三方接口实现这一过程。 首先,了解百度坐标和GPS坐标体系的区别至关重要。百度坐标,又称BD-09坐标,是中国地图服务商百度采用的一种...
通过引入百度地图的JS库,我们可以直接调用`BMap.Convertor.translate`方法进行坐标转换。这个方法接受一个数组参数,包含待转换的坐标点,以及一个回调函数,转换完成后会返回转换后的坐标。代码示例如下: ```...
本项目"GPS转百度地图坐标"是用C#编程语言实现的一个工具,用于将GPS获取的原始WGS84坐标转换为适合在百度地图上显示的BD09坐标。 首先,我们来了解一些基础概念: 1. **坐标系**:坐标系是地理空间位置的一种数学...
Gps坐标转换百度坐标
例如,当用户的位置信息是从GPS获取的WGS84坐标,但我们需要将其显示在百度地图或Google地图上时,就需要进行坐标转换。此外,对于开发者来说,理解不同坐标系间的转换原理,有助于更好地理解和优化地图服务的性能。...
本文将详细讨论“GPS坐标转换百度坐标js”的相关知识点,包括GPS坐标系统、百度地图API、JavaScript编程以及批量处理坐标转换的方法。 首先,我们要了解的是GPS坐标系统。全球定位系统(GPS)使用的是WGS84坐标系,...
通过GPS坐标的经纬度,经计算返回一组百度坐标数据,简单方便
标题中的“GPS坐标转百度坐标及纠偏”指的是在地理信息系统中,将全球定位系统(GPS)使用的坐标系统转换为百度地图所采用的坐标系统,并对可能出现的坐标偏差进行校正的过程。在地理信息技术中,不同的地图服务商...
百度坐标转换成GPS坐标,离线转换,不需要通过百度地图,精度可达到米级。同时也提供GPS坐标换成百度坐标。代码简单,自己可转成其他编程语言。
GPS坐标系转换成百度坐标系 经过验证很准确 希望能给你有所帮助。
标题中的“GPS坐标转百度坐标”是指在GIS(地理信息系统)中将全球定位系统(GPS)使用的WGS84坐标转换为百度地图所采用的BD-09坐标系统的过程。这是因为不同的地图服务提供商可能使用不同的坐标系统,导致直接在...
本实例将详细介绍如何将GPS坐标转化为百度坐标。 GPS坐标,即全球定位系统坐标,基于WGS84坐标系,是国际上广泛接受的地球参考坐标系。它由经度、纬度和海拔高度三部分组成,其中经度和纬度通常以十进制度数表示。...
本主题聚焦于“GPS坐标百度转换.zip”,它解决了一个关键问题:如何批量转换GPS坐标以便在百度地图上准确显示。这个压缩包包含了名为“GPS坐标百度转换.html”的文件,这很可能是使用JavaScript编写的网页应用,用于...
标题中的“GPS批量转换百度坐标”指的是在GIS(地理信息系统)领域中,将大量GPS(全球定位系统)获取的原始WGS84坐标转换为百度地图使用的BD09坐标系的过程。百度地图为了保护其数据安全,采用了自家的加密算法,...
标签“android gps”表明这个问题与Android平台上的GPS功能有关,开发者可能需要获取设备的GPS坐标,并将这些坐标应用到百度地图API中,以在地图上准确地显示位置标记或者进行路线规划。 “GPSConvertBaiDu”这个...
总的来说,"GPS坐标转化为百度地图坐标"是一个涉及到GIS、坐标系统和编程技术的综合性问题。理解和掌握这一过程,对于开发依赖地理位置信息的应用,尤其是针对中国市场的产品,具有重要意义。通过深入研究和实践,...
GPS坐标转换工具主要用于将全球定位系统(GPS)获取的经纬度数据转换为不同坐标系下的XY坐标,或者进行度分秒与十进制度之间的转换,以及米制与其它长度单位间的换算。以下是对这些知识点的详细说明: 1. GPS坐标...
在标题"GPS坐标转换成百度坐标的方法"中,涉及到了几个关键的坐标系统:GPS、GCJ-02、BD-09以及WGS-84。这些坐标系统在不同的场景下有不同的应用,下面将详细讲解它们之间的关系和转换方法。 首先,GPS(全球定位...
包含:GPS经纬度转XY坐标和XY坐标转GPS经纬度和函数调用示例。坐标转换具有较高的精度。
总的来说,理解并掌握GPS到百度坐标转换的原理和方法对于使用百度地图API的开发者来说至关重要。通过“GPSConvertBaiDu”这个Java DEMO,我们可以学习如何在代码中实现这种转换,进一步提升我们的GIS开发能力。同时...