开头:本次研究此功能是为了完成APP项目中的导航功能和mark标记功能,考虑到GFW问题和baidu map调用速度更快的原因,所以开始了我的百度地图调用初探。
开发学习工具:GPT-4、CSDN
学习链接:Android 程序开发——百度地图的使用(三) 地图定位(定位+跟随+距离测量+地图自适应缩放)_地图根据两点距离 显示地图缩放-CSDN博客android百度地图(实现定位)。六_locationmode.normal-CSDN博客(特别感谢两位大佬的无私分享,让我一步步思路变得越来越清晰,对原理的掌握越来越透彻)
步骤:
一、参考官方开发文档Android地图SDK | 百度地图API SDK
强烈建议开发调用baidumap api的时候先去仔细看看官方的开发文档,会很清晰!
二、具体过程
1、引入SDK那些基础的就不写了,大家可以首选参考官方文档
2、具体写一下代码逻辑
①//在使用SDK各组件之前初始化context信息,传入ApplicationContext
②初始化定位
③请求定位权限
④获取地图控件引用
⑤注册LocationListener监听器
⑥启动定位功能
⑦开启地图定位图层
⑧通过LocationClientOption设置LocationClient相关参数
设置locationClientOption
以上是onCreate中的内容,其中第一步Application需要自己创建一个,LocationListener监听器写在本activity中就可以。两个点注意一下就可以
以下是具体代码
AppLication
import com.baidu.mapapi.CoordType;
import com.baidu.mapapi.SDKInitializer;
public class AppLication extends Application {
@Override
public void onCreate() {
super.onCreate();
// 在使用 SDK 各组间之前初始化 context 信息,传入 ApplicationContext
// 默认本地个性化地图初始化方法
SDKInitializer.initialize(getApplicationContext());
// 自4.3.0起,百度地图SDK所有接口均支持百度坐标和国测局坐标,用此方法设置您使用的坐标类型.
// 包括BD09LL和GCJ02两种坐标,默认是BD09LL坐标。
SDKInitializer.setCoordType(CoordType.BD09LL);
}
}
MapNavigationActivity.class
import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;
import androidx.core.app.ActivityCompat;
import androidx.core.content.ContextCompat;
import android.Manifest;
import android.content.pm.PackageManager;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.ImageButton;
import android.widget.Toast;
import com.baidu.location.BDAbstractLocationListener;
import com.baidu.location.BDLocation;
import com.baidu.location.LocationClient;
import com.baidu.location.LocationClientOption;
import com.baidu.mapapi.CoordType;
import com.baidu.mapapi.SDKInitializer;
import com.baidu.mapapi.map.BaiduMap;
import com.baidu.mapapi.map.BitmapDescriptorFactory;
import com.baidu.mapapi.map.MapS