android开发中百度地图定位位置偏差问题

最近在做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");

你可能感兴趣的:(android开发中百度地图定位位置偏差问题)