|
百度地图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中打开位置监听
设置定位参数:
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
来源:https://www.cnblogs.com/nanne1ess/p/15640516.html |