Android 百度定位SDK的简单使用

这篇文章也是我自己为了总结之前的笔记而写的,因为之前有用到过百度定位的SDK,所以就写了这篇文章,其实大家可以参考一下百度定位官方的文档,这里放上地址链接百度SDK文档

1.首先,你需要创建一个百度地图开放平台的账号,之后按照文档要求获取开发密钥,之后jar包,so包的导入等等环境的配置工作,按照文档,很简单的,也可以网上查找资料,这里就不在过多的赘述了,下面主要介绍定位信息的获取;

2.设置一些将要用到的类对象 参数等,例如我设置了部分我用到的

// ***************************Baidu定位***********************
// 创建定位服务客户端的引用
public LocationClient mLocationClient = null;
// 声明一个对于定位的观察者对象
private MyLocationListener myListener = new MyLocationListener();
public ArrayList<BDLocation> locations = new ArrayList<BDLocation>();
//获得定位时间
private String locationTime;
//获得经度坐标
private Double locationLongitude;
//获得纬度坐标
private Double locationLatitude;
//获得详细地址信息
private String locationAddrStr;
//获取位置语义化信息,没有的话返回NULL
private String locationDescribe;
//回调的百度坐标类,内部封装了如经纬度、半径等属性信息
private BDLocation mBdLocation;
// ***************************Baidu定位***********************

3.初始化LocationClient类

**
 * 初始化百度定位
 */
private void initBaidu() {
    // 定位用声明LocationClient类
    mLocationClient = new LocationClient(getApplicationContext());

    mLocationClient.registerLocationListener(myListener);

    initLocation();
    mLocationClient.start();
}

 

其中initLocation()方法配置定位SDK参数

/**
 * 设置定位参数包括:定位模式(高精度定位模式、低功耗定位模式和仅用设备定位模式),
 * 返回坐标类型,是否打开GPS,是否返回地址信息、位置语义化信息 POI信息等等。
 */
private void initLocation() {
    LocationClientOption option = new LocationClientOption();
    option.setLocationMode(LocationClientOption.LocationMode.Hight_Accuracy);
    // 可选,默认高精度,设置定位模式,高精度,低功耗,仅设备

    option.setCoorType("bd09ll");
    // 可选,默认gcj02,设置返回的定位结果坐标系

    int span = 1000;
    option.setScanSpan(span);
    // 可选,默认0,即仅定位一次,设置发起定位请求的间隔需要大于等于1000ms才是有效的

    option.setIsNeedAddress(true);
    // 可选,设置是否需要地址信息,默认不需要

    option.setOpenGps(true);
    // 可选,默认false,设置是否使用gps

    option.setLocationNotify(true);
    // 可选,默认false,设置是否当GPS有效时按照1S/1次频率输出GPS结果

    option.setIsNeedLocationDescribe(true);
    // 可选,默认false,设置是否需要位置语义化结果,可以在BDLocation.getLocationDescribe里得到,结果类似于“在北京天安门附近”

    option.setIsNeedLocationPoiList(true);
    // 可选,默认false,设置是否需要POI结果,可以在BDLocation.getPoiList里得到

    option.setIgnoreKillProcess(true);
    // 可选,默认true,定位SDK内部是一个SERVICE,并放到了独立进程,设置是否在stop的时候杀死这个进程,默认不杀死

    option.SetIgnoreCacheException(false);
    // 可选,默认false,设置是否收集CRASH信息,默认收集

    option.setEnableSimulateGps(false);
    // 可选,默认false,设置是否需要过滤GPS仿真结果,默认需要

    mLocationClient.setLocOption(option);
}

4.创建定位监听的观察类MyLocationListener要继承自BDAbstractLocationListener,用于实现对定位的监听,同时你也可以将之前声明的一些参数,放到这里,来获取你所需要的定位信息,核心代码如下:

 

/**
 * 创建定位监听的观察类并继承自BDAbstractLocationListener
 */
public class MyLocationListener extends BDAbstractLocationListener {

    //接受到的定位信息,BDLocation中包含定位的一些信息,例如街道名称/城市/经纬度
    @Override
    public void onReceiveLocation(BDLocation bdLocation) {

        //将之前声明的一些参数放到这里,方便控件展示时,直接使用即可
        mBdLocation = bdLocation;
        locationTime = bdLocation.getTime();
        locationLongitude = bdLocation.getLongitude();
        locationLatitude = bdLocation.getLatitude();
        locationAddrStr = bdLocation.getAddrStr();
        locationDescribe = bdLocation.getLocationDescribe();


        Log.i("定位信息--------", locationTime + locationLongitude + 
                locationLatitude + locationAddrStr + locationDescribe);
        
        mLocationClient.stop();

    }
}

 

5.获取定位信息,在所需要的地方只需要发起定位即可(此为点击一次定位一次)

 

 

mLocationClient.start();

然后将获取到的定位信息展示在特定控件.

 

烦请大家尊重原创者版权,转载请标明出处 http://blog.csdn.net/JOYU_/article/details/79298144

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值