百度地图的用法总结1——配置,简单定位,反编译获取地区

本文详细介绍了如何使用百度地图SDK进行配置,包括注册开发者账户获取密钥,下载并集成SDK到Android Studio项目,以及如何获取经纬度信息和利用经纬度反编译获取地区名。步骤包括添加必要的权限,初始化LocationClient,实现BDAbstractLocationListener接口,以及使用HTTP请求获取地区信息。
摘要由CSDN通过智能技术生成

注册百度开发者账户、获取密钥

  • 注册百度账号
    要使用百度定位,首先我们要申请一个百度账号,官网申请入口,登录注册好的账号
  • 获取密钥
    1.登录后将进入API控制台,网址在这,如下图:

在这里插入图片描述

2.点击“创建应用”开始申请开发密钥,如下图:
在这里插入图片描述
3.填写应用名称,注意应用类型选择“Android SDK”、正确填写SHA1 和 程序包名
在这里插入图片描述
应用名称:
    自己随便写
包名:
    就是你应用程序的包名,打开应用程序的AndroidManifest.xml文件,package后面就是包名
在这里插入图片描述
开发版SHA1:
        打开Android Studio任意一个项目,点击右侧工具栏Gradle->项目名->app->Tasks->android,双击signingReport
在这里插入图片描述

在下方就会出现SHA1,把它复制到开发版SHA1。

发布版SHA1:
    如果你的应用只是用于平时的程序练习,简单起见,可以直接在这里填写上面的开发版SHA1,之后提交,就可以得到对应的AK了
在这里插入图片描述

下载百度地图SDK

点击开发文档->Android地图SDk->产品下载->自定义下载
在这里插入图片描述

要实现什么功能就选择下载什么,我这里只是用于获取经纬度,所以只用选择基础定位下载即可。
下载后解析点开他有两个文件,第一个文件是我们一会要用的。
在这里插入图片描述

Android Stdio的配置

  • 点开刚才的libs文件,里面有如下文件

在这里插入图片描述

  • 把他们全放在libs目录下
    在这里插入图片描述
  • 配置build.gradle文件
    在build.gradle配置我们的libs路径(sourceSets和defaultConfig同级)
sourceSets{
        main{
                 jniLibs.srcDir 'libs'
         }
}   	

注意这边的libs是和src同级,才会生效,不同目录结构按以下修改

jniLibs.srcDirs =['src/main/libs']
  • 添加依赖
 api files('libs/BaiduLBS_Android.jar')

添加后完整的build.gradle如下

apply plugin: 'com.android.application'

android {
    compileSdkVersion 30
    buildToolsVersion "30.0.2"

    defaultConfig {
        applicationId "com.example.gps"
        minSdkVersion 16
        targetSdkVersion 30
        versionCode 1
        versionName "1.0"

        testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
    }

    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
        }
    }
    sourceSets{
        main{
            jniLibs.srcDir 'libs'
            jni.srcDirs = []    //disable automatic ndk-build
        }
    }

}

dependencies {
    implementation fileTree(dir: "libs", include: ["*.jar"])
    api files('libs/BaiduLBS_Android.jar')
    implementation 'androidx.appcompat:appcompat:1.2.0'
    implementation 'androidx.constraintlayout:constraintlayout:2.0.2'
    testImplementation 'junit:junit:4.12'
    androidTestImplementation 'androidx.test.ext:junit:1.1.2'
    androidTestImplementation 'androidx.test.espresso:espresso-core:3.3.0'

}
  • AndoirdMainifest.xml中的配置
    在AndoirdMainifest.xml的application底下添加
<!-- 声明service组件 -->
<application
	<service
    	android:name="com.baidu.location.f"
    	android:enabled="true"
    	android:process=":remote">
    </service>

	<!-- AK鉴权 -->
	<!-- meta-data需要写在application中 -->
	<meta-data
    	android:name="com.baidu.lbsapi.API_KEY"
    	android:value="申请的密钥AK" /> 
</application>

加入所需的权限

<!-- 这个权限用于进行网络定位-->
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"></uses-permission>
<!-- 这个权限用于访问GPS定位-->
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"></uses-permission>
<!-- 用于访问wifi网络信息,wifi信息会用于进行网络定位-->
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"></uses-permission>
<!-- 获取运营商信息,用于支持提供运营商信息相关的接口-->
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"></uses-permission>
<!-- 这个权限用于获取wifi的获取权限,wifi信息会用来进行网络定位-->
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE"></uses-permission>
<!-- 写入扩展存储,向扩展卡写入数据,用于写入离线定位数据-->
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission>
<!-- 访问网络,网络定位需要上网-->
<uses-permission android:name="android.permission.INTERNET"></uses-permission>

使用

获取经纬度信息

  1. 初始化LocationClient类

        主线程中声明LocationClient类对象,该对象初始化需传入Context类型参数。

 	private LocationClient locationClient;
 	//这个类的具体实现在下面
    private MyLocationListener myLocationListener;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
   
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        //创建LocationClient对象
        locationClient = new LocationClient(getApplicationContext());
        //注册监听函数
        locationClient.registerLocationListener(myLocationListener);
      
   }
  1. 配置定位SDK参数
            通过参数配置,可选择定位模式、可设定返回经纬度坐标类型、可设定是单次定位还是连续定位
 LocationClientOption option = new LocationClientOption();
 option.setLocationMode(LocationClientOption.LocationMode.Hight_Accuracy);
        //可选,设置定位模式,默认高精度
        //LocationMode.Hight_Accuracy:高精度;
        //LocationMode. Battery_Saving:低功耗;
        //LocationMode. Device_Sensors:仅使用设备;

        option.setCoorType("bd09ll");
        //可选,设置返回经纬度坐标类型,默认GCJ02
        //GCJ02:国测局坐标;
        //BD09ll:百度经纬度坐标;
        //BD09:百度墨卡托坐标;
        //海外地区定位,无需设置坐标类型,统一返回WGS84类型坐标

        option.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值