首先要申请一个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(); }
然后再模拟器中设置当前定位即可,记得需要在模拟器中打开定位权限,不让定位不到