百度地图定位开发——Android地图sdk开发
百度地图Android定位SDK是为Android移动端应用提供的一套简单易用的定位服务接口,专注于为广大开发者提供最好的综合定位服务。通过使用百度定位SDK,开发者可以轻松为应用程序实现智能、精准、高效的定位功能。
打开百度地图sdk开发,输入应用名称这里需要输入SHA1,具体寻找SHA1过程可以参考官方的文档
创建成功后,下载官方的jar包,将解压后的所有文件添加到申请AK时使用的项目文件中的lib目录中。然后在app目录下的build.gradle文件中android块中配置sourceSets标签,内容如下:
sourceSets { main { jniLibs.srcDir 'libs' } }
此时就能将部分目录添加到项目视图中,现在需要将jar文件添加到项目视图中。在app目录的build.gradle的dependencies块中添加以下代码,然后右键目标jar文件,选择Add as library,就能将其加入到项目视图中。
implementation files('libs\\BaiduLBS_Android.jar')
然后打开AndroidManifest.xml文件,在<application>中加入如下代码配置开发密钥AK
,并且根据官方文档,添加权限
显示地图
我们在xml文件的代码中直接输入
<com.baidu.mapapi.map.MapView android:id="@+id/bmapView" android:layout_width="411dp" android:layout_height="662dp" android:clickable="true" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent" tools:ignore="MissingClass" />
然后我们需要初始化地图,创建一个activity
package com.example.zty_map; import androidx.appcompat.app.AppCompatActivity; import android.app.Application; import android.os.Bundle; import com.baidu.mapapi.CoordType; import com.baidu.mapapi.SDKInitializer; public class MAPZTY1 extends Application { @Override public void onCreate() { super.onCreate(); //在使用SDK各组件之前初始化context信息,传入ApplicationContext SDKInitializer.initialize(this); //自4.3.0起,百度地图SDK所有接口均支持百度坐标和国测局坐标,用此方法设置您使用的坐标类型. //包括BD09LL和GCJ02两种坐标,默认是BD09LL坐标。 SDKInitializer.setCoordType(CoordType.BD09LL); } }
并且在AndroidManifest中声明这个application
之后就可以通过创建地图的实例MyMap来显示地图
mMapView = findViewById(R.id.bmapView); mBaiduMap=mMapView.getMap(); mBaiduMap.setMyLocationEnabled(true);
显示定位
首先我们需要添加权限
<!-- 这个权限用于进行网络定位 --> <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> <!-- 这个权限用于访问GPS定位 --> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
然后在AndroidManifest的application中声明定位的service组件
<service android:name="com.baidu.location.f" android:enabled="true" android:process=":remote"/>
然后在mainactivity中添加内置类
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中打开位置监听
option.setOpenGps(true);
设置定位参数:
LocationClientOption option = new LocationClientOption(); option.setOpenGps(true); // 打开gps option.setCoorType("bd09ll"); // 设置坐标类型 option.setScanSpan(1000);
最后打开定位功能,就能显示定位
mLocationClient.start();
mLocationClient.requestLocation();
最后运行,查看定位,由于是虚拟机需要导入一个kml文件来显示定位
github地址:https://github.com/Nanne1ess/ZTY-MAP.git