首页 > 技术文章 > 百度地图定位应用

r1kka 2021-12-03 23:28 原文

首先要申请一个Android地图SDK

 

 

申请完之后需要下载一个百度地图应用第三方库,选择标准开发包jar格式,将文件解压到项目文件的lib目录中(注意不能有二级目录)

然后在app目录下的build.gradle文件中android块中配置sourceSets标签

sourceSets {
           main {
               jniLibs.srcDir 'libs'
           }
    }

在app目录的build.gradle的dependencies块中添加以下代码,然后将jar包Add as library,就能将其加入到项目视图中

implementation files('libs\\BaiduLBS_Android.jar')

然后开始AndroidManifest.xml文件的配置,在application标签中加入如下代码

声明定位的service组件

在application标签外加入以下权限声明

 

 

 然后新建一个MyLBS.java,代码如下

 

 

 同时在AndroidManifest.xml文件中声明该Application

android:name=".MyLBS"

全部完成以后就可以用MyMap对象创建地图的实例了

mapView = findViewById(R.id.bmapView);
MyMap = mapView.getMap();

完成这些可以打开地图了,接着实现定位

 public class MyLocationListener extends BDAbstractLocationListener {
        @Override
        public void onReceiveLocation(BDLocation location) {
            //mapView 销毁后不在处理新接收的位置
            if (location == null || mMapView == null){
                return;
            }
            MyLocationData locData = new MyLocationData.Builder()
                    .accuracy(location.getRadius())
                    // 此处设置开发者获取到的方向信息,顺时针0-360
                    .direction(location.getDirection()).latitude(location.getLatitude())
                    .longitude(location.getLongitude()).build();
            mBaiduMap.setMyLocationData(locData);
        }
    }

在onCreate()中设置定位参数并注册监听器

 protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        mMapView = findViewById(R.id.bmapView);
        mBaiduMap = mMapView.getMap();
        mBaiduMap.setMyLocationEnabled(true);
        mLocationClient = new LocationClient(this);
        option.setOpenGps(true); // 打开gps
        option.setCoorType("bd09ll"); // 设置坐标类型
        option.setScanSpan(1000);
//设置locationClientOption
        mLocationClient.setLocOption(option);
//注册LocationListener监听器
        MyLocationListener myLocationListener = new MyLocationListener();
        mLocationClient.registerLocationListener(myLocationListener);
//开启地图定位图层
        mLocationClient.start();
        mLocationClient.requestLocation();

    }

 

然后再模拟器中设置当前定位即可,记得需要在模拟器中打开定位权限,不让定位不到

 

 github地址:https://github.com/rikka-sherry/BaiduMap

推荐阅读