最近在做Android开发时,用到了百度地图的API,根据官方文档做了demo后发现,地图上显示的位置与实际位置有很大的偏差,通过坐标在google地图上查询,发现坐标显示的位置是准确的,但是在百度地图api上却出现了偏差。
国内主流坐标系类型
主要有以下三种:
1. WGS84:为一种大地坐标系,也是目前广泛使用的GPS全球卫星定位系统使用的坐标系;
2. GCJ02:是由中国国家测绘局制订的地理信息系统的坐标系统,是由WGS84坐标系经加密后的坐标系;
3. BD09:百度坐标系,在GCJ02坐标系基础上再次加密。其中BD09ll表示百度经纬度坐标,BD09mc表示百度墨卡托米制坐标。
百度关于坐标的官方介绍:https://lbsyun.baidu.com/index.php?title=androidsdk/guide/coordtrans
所以,需要在初始化位置时设置坐标系,代码:
最近在做Android开发时,用到了百度地图的API,根据官方文档做了demo后发现,地图上显示的位置与实际位置有很大的偏差,通过坐标在google地图上查询,发现坐标显示的位置是准确的,但是在百度地图api上却出现了偏差。
国内主流坐标系类型
主要有以下三种:
WGS84:为一种大地坐标系,也是目前广泛使用的GPS全球卫星定位系统使用的坐标系
GCJ02:是由中国国家测绘局制订的地理信息系统的坐标系统,是由WGS84坐标系经加密后的坐标系
BD09:百度坐标系,在GCJ02坐标系基础上再次加密。其中BD09ll表示百度经纬度坐标,BD09mc表示百度墨卡托米制坐标
百度关于坐标的官方介绍:
https://lbsyun.baidu.com/index.php?title=androidsdk/guide/coordtrans
所以,需要在初始化位置时设置坐标系,代码如下:
private void initLocation() {
LocationClientOption option =new LocationClientOption();
//设置发起定位请求时间间隔,大于1000ms有效
option.setScanSpan(5000);
//设置坐标系,如果没有设置,默认为GCJ02坐标系
option.setCoorType("bd09ll");
option.setLocationMode(LocationClientOption.LocationMode.Hight_Accuracy);//设置定位模式
option.setIsNeedAddress(true);//设置是否需要地理位置
mLocationClient.setLocOption(option);
}
主要是这句
option.setCoorType("bd09ll");