百度地图SDK使用[通俗易懂]
2023-06-13 09:12:08 时间
大家好,又见面了,我是你们的朋友全栈君。
将百度地图官网下载的SDK的压缩包解压得到如下文件:
将BaiduLBS_Android.jar复制到libs目录下,并点击同步
版本比较老的Gradle可能没有这一句,需要手动添加,然后同步
在main 目录下新建jniLibs文件夹,并将百度地图给的sdk里剩下的so文件导入
<!———————-开始代码部分—————————–>
AndroidManifest.xml中
添加权限如下:
<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_WIFI_STATE"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.CHANGE_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>标签中声明
<!--百度地图秘钥-->
<meta-data
android:name="com.baidu.lbsapi.API_KEY"
android:value="你在百度地图申请的秘钥"
/>
<service android:name="com.baidu.location.f" android:enabled="true"
android:process=":remote">
</service>
activity_main.xml 布局文件代码:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
<com.baidu.mapapi.map.MapView
android:id="@+id/bmapView"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:clickable="true"/>
</LinearLayout>
MainActivity
public class MainActivity extends AppCompatActivity {
public LocationClient mLocationCLient;
private MapView mapView;
private BaiduMap baiduMap;
private boolean isFirstLocate = true;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mLocationCLient = new LocationClient(getApplicationContext());
mLocationCLient.registerLocationListener(new MyLocationListener());
SDKInitializer.initialize(getApplicationContext());
setContentView(R.layout.activity_main);
mapView = (MapView) findViewById(R.id.bmapView);
baiduMap = mapView.getMap();
// 让我显示在地图上
baiduMap.setMyLocationEnabled(true);
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 navigateTo(BDLocation location){
if (isFirstLocate){
LatLng ll=new LatLng(location.getLatitude(),location.getLongitude());
MapStatusUpdate update= MapStatusUpdateFactory.newLatLng(ll);
baiduMap.animateMapStatus(update);
update=MapStatusUpdateFactory.zoomTo(16f);
baiduMap.animateMapStatus(update);
isFirstLocate=false;
}
MyLocationData.Builder locationBuilder=new MyLocationData.Builder();
locationBuilder.latitude(location.getLatitude());
locationBuilder.longitude(location.getLongitude());
MyLocationData locationData=locationBuilder.build();
baiduMap.setMyLocationData(locationData);
}
private void requestLocation() {
initLocation();
mLocationCLient.start();
}
private void initLocation() {
LocationClientOption option = new LocationClientOption();
option.setScanSpan(1000);
option.setIsNeedAddress(true);
mLocationCLient.setLocOption(option);
}
@Override
protected void onResume() {
super.onResume();
mapView.onResume();
}
@Override
protected void onPause() {
super.onPause();
mapView.onPause();
}
@Override
protected void onDestroy() {
super.onDestroy();
mLocationCLient.stop();
mapView.onDestroy();
baiduMap.setMyLocationEnabled(false);
}
@Override
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();
finish();
}
break;
default:
}
}
public class MyLocationListener implements BDLocationListener {
@Override
public void onReceiveLocation(final BDLocation location) {
if (location.getLocType()==BDLocation.TypeGpsLocation
|| location.getLocType()==BDLocation.TypeNetWorkLocation){
navigateTo(location);
}
}
}
}
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/154863.html原文链接:https://javaforall.cn
相关文章
- 百度Newifi上手评测(三)
- Yoco百度文库下载器v0.1.1单文件-星泽V社
- Unity 接入百度AI - 车型识别
- android sdk安装过程,图文详解Android 3.0 SDK安装教程
- 获取百度热搜/实时热点 API
- webGIS,基于百度地图的HelloWord实现
- 从融合创新到降低门槛,全新发布的百度大脑7.0撑起AI时代「星辰大海」
- 百度高德地图JS-API学习手记:地图基本设置与省市区数据加载
- linux SDK安装: 一步步指引(linux下sdk安装)
- Linux下安装SDK环境必备步骤(linux安装sdk环境)
- java搭建Linux环境下的Java SDK(sdk-linux)
- 小白观察:Google 开始清除百度旗下公司开发的 46 款应用程序
- 李彦宏刚刷出的好感度又被百度用户体验总监给败光
- 百度抖动360可伤害MySQL性能(360导致mysql)
- 如何设置Oracle SDK的路径(oracle sdk路径)
- 百度IDL最新成果:从自然语言入手,教AI智能体像人类一样学习
- 仿百度输入框智能提示的js代码