update baidu map sdk to 7.5.0

This commit is contained in:
ZCShou 2022-05-11 16:40:25 +08:00
parent 63b80ab5b7
commit aed7ab0821
10 changed files with 112 additions and 96 deletions

View File

@ -22,8 +22,8 @@ android {
applicationId "com.zcshou.gogogo"
minSdkVersion 27
targetSdkVersion 32
versionCode 192
versionName '1.9.2' // https://semver.org/lang/zh-CN/
versionCode 1100
versionName '1.10.0' // https://semver.org/lang/zh-CN/
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
resConfigs 'zh', 'zh-rCN', 'en', 'en-rUS' //
ndk {

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -2,8 +2,11 @@ package com.zcshou.gogogo;
import android.app.Application;
import com.baidu.location.LocationClient;
import com.baidu.mapapi.CoordType;
import com.baidu.mapapi.SDKInitializer;
import com.baidu.mapapi.common.BaiduMapSDKException;
import com.elvishew.xlog.LogConfiguration;
import com.elvishew.xlog.LogLevel;
import com.elvishew.xlog.XLog;
@ -25,9 +28,19 @@ public class GoApplication extends Application {
public void onCreate() {
super.onCreate();
// 百度地图 SDK 初始化
SDKInitializer.initialize(getApplicationContext());
//
// 百度地图 7.5 开始要求必须同意隐私政策默认为false
SDKInitializer.setAgreePrivacy(this, true);
// 百度定位 7.5 开始要求必须同意隐私政策默认为false(官方说可以统一为以上接口但实际测试并不行定位还是需要单独设置)
LocationClient.setAgreePrivacy(true);
try {
// 在使用 SDK 各组间之前初始化 context 信息传入 ApplicationContext
SDKInitializer.initialize(this);
SDKInitializer.setCoordType(CoordType.BD09LL);
} catch (BaiduMapSDKException e) {
e.printStackTrace();
}
initXlog();
}

View File

@ -546,102 +546,106 @@ public class MainActivity extends BaseActivity
//开启地图的定位图层
private void initBaiduLocation() {
// 定位初始化
mLocClient = new LocationClient(this);
mLocClient.registerLocationListener(new BDAbstractLocationListener() {
@Override
public void onReceiveLocation(BDLocation bdLocation) {
if (bdLocation == null || mMapView == null) {// mapview 销毁后不在处理新接收的位置
return;
}
try {
// 定位初始化
mLocClient = new LocationClient(this);
mLocClient.registerLocationListener(new BDAbstractLocationListener() {
@Override
public void onReceiveLocation(BDLocation bdLocation) {
if (bdLocation == null || mMapView == null) {// mapview 销毁后不在处理新接收的位置
return;
}
mCurrentCity = bdLocation.getCity();
mCurrentLat = bdLocation.getLatitude();
mCurrentLon = bdLocation.getLongitude();
MyLocationData locData = new MyLocationData.Builder()
.accuracy(bdLocation.getRadius())
.direction(mCurrentDirection)// 此处设置开发者获取到的方向信息顺时针0-360
.latitude(bdLocation.getLatitude())
.longitude(bdLocation.getLongitude()).build();
mBaiduMap.setMyLocationData(locData);
MyLocationConfiguration configuration = new MyLocationConfiguration(MyLocationConfiguration.LocationMode.NORMAL, true, null);
mBaiduMap.setMyLocationConfiguration(configuration);
mCurrentCity = bdLocation.getCity();
mCurrentLat = bdLocation.getLatitude();
mCurrentLon = bdLocation.getLongitude();
MyLocationData locData = new MyLocationData.Builder()
.accuracy(bdLocation.getRadius())
.direction(mCurrentDirection)// 此处设置开发者获取到的方向信息顺时针0-360
.latitude(bdLocation.getLatitude())
.longitude(bdLocation.getLongitude()).build();
mBaiduMap.setMyLocationData(locData);
MyLocationConfiguration configuration = new MyLocationConfiguration(MyLocationConfiguration.LocationMode.NORMAL, true, null);
mBaiduMap.setMyLocationConfiguration(configuration);
if (isMove) {
isMove = false;
mBaiduMap.clear();
mMarkLatLngMap = null;
if (isMove) {
isMove = false;
mBaiduMap.clear();
mMarkLatLngMap = null;
if (GoUtils.isWifiEnabled(MainActivity.this)) {
GoUtils.showDisableWifiDialog(MainActivity.this);
if (GoUtils.isWifiEnabled(MainActivity.this)) {
GoUtils.showDisableWifiDialog(MainActivity.this);
}
}
/* 如果出现错误,则需要重新请求位置 */
int err = bdLocation.getLocType();
if (err == BDLocation.TypeCriteriaException || err == BDLocation.TypeNetWorkException) {
mLocClient.requestLocation(); /* 请求位置 */
} else {
if (isFirstLoc) {
isFirstLoc = false;
// 这里记录百度地图返回的位置
mMarkLatLngMap = new LatLng(bdLocation.getLatitude(), bdLocation.getLongitude());
MapStatus.Builder builder = new MapStatus.Builder();
builder.target(mMarkLatLngMap).zoom(18.0f);
mBaiduMap.animateMapStatus(MapStatusUpdateFactory.newMapStatus(builder.build()));
XLog.i("First Baidu LatLng: " + mMarkLatLngMap);
// 这里将百度地图位置转换为 GPS 坐标
double[] latLng = MapUtils.bd2wgs(mMarkLatLngMap.longitude, mMarkLatLngMap.latitude);
mCurLng = latLng[0];
mCurLat = latLng[1];
}
}
}
/* 如果出现错误,则需要重新请求位置 */
int err = bdLocation.getLocType();
if (err == BDLocation.TypeCriteriaException || err == BDLocation.TypeNetWorkException) {
mLocClient.requestLocation(); /* 请求位置 */
} else {
if (isFirstLoc) {
isFirstLoc = false;
// 这里记录百度地图返回的位置
mMarkLatLngMap = new LatLng(bdLocation.getLatitude(), bdLocation.getLongitude());
MapStatus.Builder builder = new MapStatus.Builder();
builder.target(mMarkLatLngMap).zoom(18.0f);
mBaiduMap.animateMapStatus(MapStatusUpdateFactory.newMapStatus(builder.build()));
XLog.i("First Baidu LatLng: " + mMarkLatLngMap);
// 这里将百度地图位置转换为 GPS 坐标
double[] latLng = MapUtils.bd2wgs(mMarkLatLngMap.longitude, mMarkLatLngMap.latitude);
mCurLng = latLng[0];
mCurLat = latLng[1];
}
/**
* 错误的状态码
* <a>http://lbsyun.baidu.com/index.php?title=android-locsdk/guide/addition-func/error-code</a>
* <p>
* 回调定位诊断信息开发者可以根据相关信息解决定位遇到的一些问题
*
* @param locType 当前定位类型
* @param diagnosticType 诊断类型1~9
* @param diagnosticMessage 具体的诊断信息释义
*/
public void onLocDiagnosticMessage(int locType, int diagnosticType, String diagnosticMessage) {
XLog.i("Baidu ERROR: " + locType + "-" + diagnosticType + "-" + diagnosticMessage);
}
}
/**
* 错误的状态码
* <a>http://lbsyun.baidu.com/index.php?title=android-locsdk/guide/addition-func/error-code</a>
* <p>
* 回调定位诊断信息开发者可以根据相关信息解决定位遇到的一些问题
*
* @param locType 当前定位类型
* @param diagnosticType 诊断类型1~9
* @param diagnosticMessage 具体的诊断信息释义
*/
public void onLocDiagnosticMessage(int locType, int diagnosticType, String diagnosticMessage) {
XLog.i("Baidu ERROR: " + locType + "-" + diagnosticType + "-" + diagnosticMessage);
}
});
LocationClientOption locationOption = new LocationClientOption();
//可选默认高精度设置定位模式高精度低功耗仅设备
locationOption.setLocationMode(LocationClientOption.LocationMode.Hight_Accuracy);
//可选默认gcj02设置返回的定位结果坐标系如果配合百度地图使用建议设置为bd09ll;
locationOption.setCoorType("bd09ll");
//可选默认0即仅定位一次设置发起连续定位请求的间隔需要大于等于1000ms才是有效的
locationOption.setScanSpan(1000);
//可选设置是否需要地址信息默认不需要
locationOption.setIsNeedAddress(true);
//可选设置是否需要设备方向结果
locationOption.setNeedDeviceDirect(false);
//可选默认false设置是否当gps有效时按照1S1次频率输出GPS结果
locationOption.setLocationNotify(true);
//可选默认true定位SDK内部是一个SERVICE并放到了独立进程设置是否在stop的时候杀死这个进程默认不杀死
locationOption.setIgnoreKillProcess(true);
//可选默认false设置是否需要位置语义化结果可以在BDLocation.getLocationDescribe里得到结果类似于在北京天安门附近
locationOption.setIsNeedLocationDescribe(false);
//可选默认false设置是否需要POI结果可以在BDLocation.getPoiList里得到
locationOption.setIsNeedLocationPoiList(false);
//可选默认false设置是否收集CRASH信息默认收集
locationOption.SetIgnoreCacheException(true);
//可选默认false设置是否开启Gps定位
locationOption.setOpenGps(true);
//可选默认false设置定位时是否需要海拔信息默认不需要除基础定位版本都可用
locationOption.setIsNeedAltitude(false);
//需将配置好的LocationClientOption对象通过setLocOption方法传递给LocationClient对象使用
mLocClient.setLocOption(locationOption);
//开始定位
mLocClient.start();
});
LocationClientOption locationOption = new LocationClientOption();
//可选默认高精度设置定位模式高精度低功耗仅设备
locationOption.setLocationMode(LocationClientOption.LocationMode.Hight_Accuracy);
//可选默认gcj02设置返回的定位结果坐标系如果配合百度地图使用建议设置为bd09ll;
locationOption.setCoorType("bd09ll");
//可选默认0即仅定位一次设置发起连续定位请求的间隔需要大于等于1000ms才是有效的
locationOption.setScanSpan(1000);
//可选设置是否需要地址信息默认不需要
locationOption.setIsNeedAddress(true);
//可选设置是否需要设备方向结果
locationOption.setNeedDeviceDirect(false);
//可选默认false设置是否当gps有效时按照1S1次频率输出GPS结果
locationOption.setLocationNotify(true);
//可选默认true定位SDK内部是一个SERVICE并放到了独立进程设置是否在stop的时候杀死这个进程默认不杀死
locationOption.setIgnoreKillProcess(true);
//可选默认false设置是否需要位置语义化结果可以在BDLocation.getLocationDescribe里得到结果类似于在北京天安门附近
locationOption.setIsNeedLocationDescribe(false);
//可选默认false设置是否需要POI结果可以在BDLocation.getPoiList里得到
locationOption.setIsNeedLocationPoiList(false);
//可选默认false设置是否收集CRASH信息默认收集
locationOption.SetIgnoreCacheException(true);
//可选默认false设置是否开启Gps定位
locationOption.setOpenGps(true);
//可选默认false设置定位时是否需要海拔信息默认不需要除基础定位版本都可用
locationOption.setIsNeedAltitude(false);
//需将配置好的LocationClientOption对象通过setLocOption方法传递给LocationClient对象使用
mLocClient.setLocOption(locationOption);
//开始定位
mLocClient.start();
} catch (Exception e) {
e.printStackTrace();
}
}
//地图上各按键的监听

View File

@ -36,7 +36,6 @@ public class WelcomeActivity extends AppCompatActivity {
private static final int SDK_PERMISSION_REQUEST = 127;
private static final ArrayList<String> ReqPermissions = new ArrayList<>();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);