百度地图定位SDK提供了GPS、基站、WiFi、地磁、蓝牙、传感器等多种定位方式,适用于室内、室外多种定位场景,定位精度高、覆盖率广、网络定位请求流量小、定位速度快;
官方API:Android定位SDK | 百度地图API SDK
引入百度SDK
dependencies {
implementation 'com.baidu.lbsyun:BaiduMapSDK_Location:9.3.7' //百度地图,基础定位组件
}
参考代码
public void initLocationOption() {
//配置定位参数
LocationClientOption option = new LocationClientOption();
//可选,默认高精度,设置定位模式,高精度,低功耗,仅设备
option.setLocationMode(LocationClientOption.LocationMode.Hight_Accuracy);
//可选,设置是否需要地址信息,默认不需要
option.setIsNeedAddress(true);
//可选,默认false,设置是否开启卫星定位
option.setOpenGnss(true);
try {
//定位必须获得用户允许
LocationClient.setAgreePrivacy(true);
//定位服务的客户端。宿主程序在客户端声明此类,并调用,目前只支持在主线程中启动
LocationClient locationClient = new LocationClient(getApplicationContext());
// 使用定位参数
locationClient.setLocOption(option);
//注册监听函数
locationClient.registerLocationListener(new MyLocationListener());
//开始定位
locationClient.start();
} catch (Exception e) {
e.printStackTrace();
} finally {
// locationClient.stop();
}
}
/**
* 实现定位回调
*/
private class MyLocationListener extends BDAbstractLocationListener {
@Override
public void onReceiveLocation(BDLocation location) {
System.out.println(location.getAddrStr());//详细地址
System.out.println(location.getCity());//地市
System.out.println(location.getLongitude());//经度
System.out.println(location.getLatitude());//纬度
System.out.println(location);
}
}