Android基础:百度SDK使用 | 带
百度SDK
- 首先从百度地图官网lbs下载需要的功能包,然后将之放进对应的文件夹里
- 其次,在xml里申请需要用到的权限
- manifest
-
<!--申请权限-->
-
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
-
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
-
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
-
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
-
<uses-permission android:name="android.permission.READ_PHONE_STATE"/>
-
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
-
<uses-permission android:name="android.permission.INTERNET"/>
-
<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/>
-
<uses-permission android:name="android.permission.WAKE_LOCK"/>
-
-
<application
-
android:allowBackup="true"
-
android:icon="@mipmap/ic_launcher"
-
android:label="@string/app_name"
-
android:roundIcon="@mipmap/ic_launcher_round"
-
android:supportsRtl="true"
-
android:theme="@style/AppTheme">
-
<!--添加meta-data标签,name属性是固定的,value是我们创建时百度生成的-->
-
<meta-data
-
android:name="com.百度.lbsapi.API_KEY"
-
android:value="D1LCt49XRl4w3GlLXvSo8BEzX6VICo7v"/>
-
-
<activity android:name=".MainActivity">
-
<intent-filter>
-
<action android:name="android.intent.action.MAIN" />
-
-
<category android:name="android.intent.category.LAUNCHER" />
-
</intent-filter>
-
</activity>
-
-
<!--注册一个LBS SDK服务-->
-
<service android:name="com.百度.location.f"
-
android:enabled="true"
-
android:process=":remote"/>
-
</application>
- activity_main
-
<TextView
-
android:id="@ id/position_text_view"
-
android:layout_width="wrap_content"
-
android:layout_height="wrap_content"
-
android:visibility="gone"
-
app:layout_constraintBottom_toBottomOf="parent"
-
app:layout_constraintHorizontal_bias="0.204"
-
app:layout_constraintLeft_toLeftOf="parent"
-
app:layout_constraintRight_toRightOf="parent"
-
app:layout_constraintTop_toTopOf="parent"
-
app:layout_constraintVertical_bias="0.044" />
-
-
<com.百度.mapapi.map.MapView
-
android:id="@ id/bmapView"
-
android:layout_width="match_parent"
-
android:layout_height="match_parent"
-
android:clickable="true"
-
app:layout_constraintBottom_toBottomOf="parent"
-
app:layout_constraintEnd_toEndOf="parent"
-
app:layout_constraintStart_toStartOf="parent"
-
app:layout_constraintTop_toTopOf="parent" />
- MainActivity
-
public class MainActivity extends AppCompatActivity {
-
-
// 创建一个LocationClient实例
-
public LocationClient mLocationClient;
-
-
private TextView positionText;
-
-
private MapView mMapView;
-
-
// 创建一个地图控制器,为显示所处位置做准备
-
private BaiduMap mBaiduMap;
-
private boolean isFirstLocate = true;
-
-
-
protected void onCreate(Bundle savedInstanceState) {
-
super.onCreate(savedInstanceState);
-
-
// 接收一个全局context
-
mLocationClient = new LocationClient(getApplicationContext());
-
// 注册一个监听器,当获取到位置信息的时候,回调该定位监听器
-
mLocationClient.registerLocationListener(new MyLocationListener());
-
// 初始化地图
-
SDKInitializer.initialize(getApplicationContext());
-
-
setContentView(R.layout.activity_main);
-
-
mMapView = findViewById(R.id.bmapView);
-
-
// 获取BaiduMap实例
-
mBaiduMap = mMapView.getMap();
-
-
// 获得权限,使光标显示在地图上
-
mBaiduMap.setMyLocationEnabled(true);
-
-
positionText = findViewById(R.id.position_text_view);
-
// 创建一个空集合,将需要动态申请的权限,没授权的依次添加进来
-
List<String> permissionList = new ArrayList<>();
-
-
if (ContextCompat.checkSelfPermission(MainActivity.this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
-
permissionList.add(Manifest.permission.ACCESS_FINE_LOCATION);
-
}
-
if (ContextCompat.checkSelfPermission(MainActivity.this, Manifest.permission.READ_PHONE_STATE) != PackageManager.PERMISSION_GRANTED) {
-
permissionList.add(Manifest.permission.READ_PHONE_STATE);
-
}
-
if (ContextCompat.checkSelfPermission(MainActivity.this, Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) {
-
permissionList.add(Manifest.permission.WRITE_EXTERNAL_STORAGE);
-
}
-
-
// 判断集合是否为空,不为空则转换为数组,一次性申请权限
-
if (!permissionList.isEmpty()) {
-
String[] permissions = permissionList.toArray(new String[permissionList.size()]);
-
ActivityCompat.requestPermissions(MainActivity.this,permissions,1);
-
} else {
-
requestLocation();
-
}
-
-
}
-
-
private void requestLocation() {
-
initLocation();
-
// 结果回调到监听器
-
mLocationClient.start();
-
}
-
-
// 实时更新定位
-
private void initLocation() {
-
LocationClientOption option = new LocationClientOption();
-
// 设定每5秒更新一次定位数据
-
option.setScanSpan(1000);
-
-
// 设置为百度地图坐标体系,默认gcj02出来的位置误差太大
-
// WGS-84:是国际标准,GPS坐标(Google Earth使用、或者GPS模块)
-
// GCJ-02:中国坐标偏移标准,Google Map、高德、腾讯使用
-
// BD-09:百度坐标偏移标准,Baidu Map使用
-
option.setCoorType("bd09ll");
-
-
// 设定强制使用GPS定位
-
//option.setLocationMode(LocationClientOption.LocationMode.Device_Sensors);
-
-
// 获取当前位置的详细信息
-
option.setIsNeedAddress(true);
-
-
mLocationClient.setLocOption(option);
-
}
-
-
-
protected void onResume() {
-
super.onResume();
-
mMapView.onResume();
-
}
-
-
-
protected void onPause() {
-
super.onPause();
-
mMapView.onPause();
-
}
-
-
-
protected void onDestroy() {
-
super.onDestroy();
-
// 在活动被摧毁时一定要调用该方法停止定位,否则程序会在后台持续定位,消耗手机电量
-
mLocationClient.stop();
-
mMapView.onDestroy();
-
mBaiduMap.setMyLocationEnabled(false);
-
}
-
-
-
public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
-
switch (requestCode) {
-
case 1:
-
if (grantResults.length > 0) {
-
for (int result : grantResults) {
-
if (result != PackageManager.PERMISSION_GRANTED) {
-
Toast.makeText(this,"必须同意所有权限才能使用本程序",Toast.LENGTH_SHORT).show();
-
finish();
-
return;
-
}
-
}
-
requestLocation();
-
} else {
-
Toast.makeText(this,"发生未知错误",Toast.LENGTH_SHORT).show();
-
}
-
break;
-
default:
-
}
-
}
-
-
// 用于获取当前位置,并更新到地图上
-
private void navigateTo(BDLocation location) {
-
if (isFirstLocate) {
-
LatLng ll = new LatLng(location.getLatitude(),location.getLongitude());
-
MapStatusUpdate update = MapStatusUpdateFactory.newLatLng(ll);
-
mBaiduMap.animateMapStatus(update);
-
// 缩放级别3~19之间,越高越精确
-
update = MapStatusUpdateFactory.zoomTo(18f);
-
mBaiduMap.animateMapStatus(update);
-
isFirstLocate = false;
-
}
-
-
// 设置显示我在地图上的光标信息
-
MyLocationData.Builder locationBuilder = new MyLocationData.Builder();
-
locationBuilder.latitude(location.getLatitude());
-
locationBuilder.longitude(location.getLongitude());
-
MyLocationData locationData = locationBuilder.build();
-
mBaiduMap.setMyLocationData(locationData);
-
-
}
-
-
public class MyLocationListener implements BDLocationListener {
-
-
-
public void onReceiveLocation(BDLocation bdLocation) {
-
-
// 用于判断是不是第一次定位
-
if (bdLocation.getLocType() == BDLocation.TypeGpsLocation || bdLocation.getLocType() == BDLocation.TypeNetWorkLocation){
-
navigateTo(bdLocation);
-
}
-
-
StringBuilder currentPosition = new StringBuilder();
-
currentPosition.append("纬度: ").append(bdLocation.getLatitude()).append("
-
");
-
currentPosition.append("经度: ").append(bdLocation.getLongitude()).append("
-
");
-
currentPosition.append("国家: ").append(bdLocation.getCountry()).append("
-
");
-
currentPosition.append("省: ").append(bdLocation.getProvince()).append("
-
");
-
currentPosition.append("市: ").append(bdLocation.getCity()).append("
-
");
-
currentPosition.append("区: ").append(bdLocation.getDistrict()).append("
-
");
-
currentPosition.append("街道: ").append(bdLocation.getStreet()).append("
-
");
-
currentPosition.append("定位方式: ");
-
if (bdLocation.getLocType() == BDLocation.TypeGpsLocation) {
-
currentPosition.append("GPS");
-
} else if (bdLocation.getLocType() == BDLocation.TypeNetWorkLocation) {
-
currentPosition.append("网络");
-
}
-
-
positionText.setText(currentPosition);
-
-
}
-
}
-
}
- 下载地址
https://github.com/qricis/DoSomeAndroidTest/tree/main/LBSTest
这篇好文章是转载于:学新通技术网
- 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
- 本站站名: 学新通技术网
- 本文地址: /boutique/detail/tanhgceabh
系列文章
更多
同类精品
更多
-
photoshop保存的图片太大微信发不了怎么办
PHP中文网 06-15 -
《学习通》视频自动暂停处理方法
HelloWorld317 07-05 -
word里面弄一个表格后上面的标题会跑到下面怎么办
PHP中文网 06-20 -
Android 11 保存文件到外部存储,并分享文件
Luke 10-12 -
photoshop扩展功能面板显示灰色怎么办
PHP中文网 06-14 -
微信公众号没有声音提示怎么办
PHP中文网 03-31 -
excel下划线不显示怎么办
PHP中文网 06-23 -
excel打印预览压线压字怎么办
PHP中文网 06-22 -
TikTok加速器哪个好免费的TK加速器推荐
TK小达人 10-01 -
怎样阻止微信小程序自动打开
PHP中文网 06-13