Appearance
获取位置
三方依赖
com.google.code.gson:gson:2.8.5
com.squareup.wire:wire-runtime:1.6.1
com.squareup.okio:okio:2.8.0
定位权限
定位权限需要用户去申请,需要如下权限:
java
<uses-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS"/>
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE"/>
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_BACKGROUND_LOCATION" /> <!-- Android Q -->启动定位
支持两种定位场景选择,分别为:导航场景,非导航场景(默认)。
司机定位推荐使用司机场景,定位时将会考虑司机速度、方向、角度等因素,提高司机的定位精度。
乘客定位推荐使用乘客场景,定位时不考虑司机场景的决策因素,从而降低乘客端请求量和流量消耗。
java
// 在一个使用场景中,新建一个定位服务client
DMapLocationClient locationClient = new DMapLocationClient(this);
// 设置定位回调监听
locationClient.setLocationListener(dmapLocation -> {
if (dmapLocation.getErrorCode() == DMapLocation.ErrorCode.SUCCESS) {
dLogLocs(new Date().toLocaleString() + ":\n" + dmapLocation.toString());
} else {
//定位失败时,可通过ErrCode(错误码)信息来确定失败的原因,errInfo是错误信息,详见错误码表。
dLogLocs("DmapError location Error, ErrCode:"
+ dmapLocation.getErrorCode() + ", errInfo:"
+ dmapLocation.getErrorInfo());
}
);
// 设置option
DMapLocationClientOption locationOption = new DMapLocationClientOption();
// 设置导航场景,默认非导航场景
locationOption.setNaviMode(true);
// 设置回调间隔,默认Normal:3秒一次
locationOption.setInterval(DMapLocationClientOption.IntervalMode.NORMAL);
// 设置单次定位,默认为连续定位
// locationOption.setOnceLocation(true)
locationClient.setLocationOption(locationOption);
// 启动定位
locationClient.startLocation();
// 停止定位
locationClient.stopLocation();