Android 百度地图定位显示当前位置

article/2025/7/11 16:34:17

 此处我已经创建了一个应用,就可以进入下一步了。

配置 Android Studio

其实在百度地图官网中有详细的步骤,可参考官网的。
首先,下载开发包:

 

下载完成后解压,将开发包拷贝至工程(截图以普通地图服务的开发包为例,步骑行导航的开发包同理)

1、添加jar文件
     打开解压后的开发包文件夹,找到BaiduLBS_Android.jar文件将其拷贝至工程的app/libs目录下,如图:

 2、添加so文件
     有两种方法可以往项目中添加so文件。
     方法一:
    在下载的开发包中拷贝需要的CPU架构对应的so文件文件夹到app/libs目录下,如图:

在app目录下的build.gradle文件中android块中配置sourceSets标签,如果没有使用该标签则新增,详细配置代码如下:

sourceSets {main {jniLibs.srcDir 'libs'}}

往工程中添加jar文件

 在工程配置中需要将前面添加的jar文件集成到我们的工程中。
       在libs目录下,选中每一个jar文件(此处只有一个BaiduLbs_Android.jar)右键,选择Add As Library…,此时会发现在app目录的build.gradle的dependencies块中生成了工程所依赖的jar文件的对应说明,如下所示:

至此已完成AndroidStudio开发环境的配置,接下来就使用百度地图。 

显示地图

配置 AndroidManifest.xml 文件

  1. 在 <application>中加入如下代码配置开发密钥(AK):
    <meta-dataandroid:name="com.baidu.lbsapi.API_KEY"android:value="vw7ktfEvWB2ISqAkN3i2ObmFQOeRtse9" />

    此处的AK既是开始创建的应用。

  2.  在<application/>外部添加如下权限声明:

  3. <!-- 访问网络,进行地图相关业务数据请求,包括地图数据,路线规划,POI检索等 -->
    <uses-permission android:name="android.permission.INTERNET" />
    <!-- 获取网络状态,根据网络状态切换进行数据请求网络转换 -->
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /><!-- 读取外置存储。如果开发者使用了so动态加载功能并且把so文件放在了外置存储区域,则需要申请该权限,否则不需要 -->
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
    <!-- 写外置存储。如果开发者使用了离线地图,并且数据写在外置存储区域,则需要申请该权限 -->
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 

    第二步 在布局文件中添加地图容器

    MapView是View的一个子类,用于在Android View中放置地图。MapView的使用方法与Android提供的其他View一样。

    <com.baidu.mapapi.map.MapView  android:id="@+id/bmapView"  android:layout_width="match_parent"  android:layout_height="match_parent"  android:clickable="true" />

    第三步 地图初始化

    注意:在SDK各功能组件使用之前都需要调用“SDKInitializer.initialize(getApplicationContext())”,因此建议在应用创建时初始化SDK引用的Context为全局变量。

    新建一个自定义的Application,在其onCreate方法中完成SDK的初始化。示例代码如下:

    public class DemoApplication extends Application {@Overridepublic void onCreate() {super.onCreate();//在使用SDK各组件之前初始化context信息,传入ApplicationContext   SDKInitializer.initialize(this);//自4.3.0起,百度地图SDK所有接口均支持百度坐标和国测局坐标,用此方法设置您使用的坐标类型.//包括BD09LL和GCJ02两种坐标,默认是BD09LL坐标。SDKInitializer.setCoordType(CoordType.BD09LL);}
    }

    在AndroidManifest.xml文件中声明该Application

    创建地图Activity,管理MapView生命周期

    注意:在项目中使用地图的时候要特别注意合理地管理地图生命周期,这非常重要。

    以下示例代码简述对地图生命周期的管理:

    public class MainActivity extends Activity {  private MapView mMapView = null;  @Override  protected void onCreate(Bundle savedInstanceState) {  super.onCreate(savedInstanceState);    setContentView(R.layout.activity_main);  //获取地图控件引用  mMapView = (MapView) findViewById(R.id.bmapView);  }  @Override  protected void onResume() {  super.onResume();  //在activity执行onResume时执行mMapView. onResume (),实现地图生命周期管理  mMapView.onResume();  }  @Override  protected void onPause() {  super.onPause();  //在activity执行onPause时执行mMapView. onPause (),实现地图生命周期管理  mMapView.onPause();  } @Override  protected void onDestroy() {  super.onDestroy();  //在activity执行onDestroy时执行mMapView.onDestroy(),实现地图生命周期管理  mMapView.onDestroy();  }  
    }

     完成以上工作即可在您的应用中显示地图:

     显示定位

    配置AndroidManifest.xml文件

    1.加入如下权限使用声明

    <!-- 这个权限用于进行网络定位 -->
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
    <!-- 这个权限用于访问GPS定位 -->
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />

    2.在Application标签中声明定位的service组件

    <service android:name="com.baidu.location.f"android:enabled="true"android:process=":remote"/>

    3.开启地图的定位图层

    mBaiduMap.setMyLocationEnabled(true);

    4.构造地图数据

    我们通过继承抽象类BDAbstractListener并重写其onReceieveLocation方法来获取定位数据,并将其传给MapView。

    public class MyLocationListener extends BDAbstractLocationListener {@Overridepublic 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);}
    }

    5.通过LocationClient发起定位

    //定位初始化
    mLocationClient = new LocationClient(this);//通过LocationClientOption设置LocationClient相关参数
    LocationClientOption option = new LocationClientOption();
    option.setOpenGps(true); // 打开gps
    option.setCoorType("bd09ll"); // 设置坐标类型
    option.setScanSpan(1000);//设置locationClientOption
    mLocationClient.setLocOption(option);//注册LocationListener监听器
    MyLocationListener myLocationListener = new MyLocationListener();
    mLocationClient.registerLocationListener(myLocationListener);
    //开启地图定位图层
    mLocationClient.start();

    6.正确管理各部分的生命周期

    @Override
    protected void onResume() {mMapView.onResume();super.onResume();
    }@Override
    protected void onPause() {mMapView.onPause();super.onPause();
    }@Override
    protected void onDestroy() {mLocationClient.stop();mBaiduMap.setMyLocationEnabled(false);mMapView.onDestroy();mMapView = null;super.onDestroy();
    }

    完成以上工作,即可在您的地图应用中显示当前位置的蓝点,如下图:

    此处由于虚拟机原因,只能定位到几内亚。 最后我用usb接口连接手机运行,开启位置权限后运行。结果如下:

    到此实验结束 


http://chatgpt.dhexx.cn/article/JFAarBMM.shtml

相关文章

微信小程序 腾讯地图大头针定位,获取当前地址,地图移动选点,定位当前位置

主要实现功能&#xff1a; a.进入地图界面&#xff0c;会自动获取当前位置&#xff08;用户需授权地理位置权限&#xff09;&#xff0c;并显示省市区在左上角&#xff0c;根据个人需求&#xff0c;我只显示了区 b.大头针实现&#xff0c;拖动地图&#xff0c;大头针都能获取到…

[android] 百度地图开发 (三).定位当前位置及getLastKnownLocation获取location总为空问题

前一篇百度地图开发讲述"(二).定位城市位置和城市POI搜索"&#xff0c;主要通过监听对象MKSearchListener类实现城市兴趣点POI(Point of Interest)搜索。该篇讲述定位当前自己的位置及使用getLastKnownLocation获取location总时为空值的问题。 一. 定位当前位置的原…

Android进阶之路 - 定位当前位置、获取经纬度

最近又遇到定位场景&#xff0c;需要上传经纬度&#xff0c;正好同事写了&#xff0c;我就记录一下方便你我他 ~ ~ 今年开始用的kt比较多&#xff0c;所以篇内用的kt&#xff0c;见谅见谅 前情悉知 获取当前位置时&#xff0c;需要判断用户是否授权&#xff0c;这里用到的是 …

vue-amap实现实现初始化并定位当前位置,搜索,定位,增加点标记

实现如图展示&#xff0c;初始化并定位当前位置&#xff0c;搜索&#xff0c;定位&#xff0c;增加点标记 下载vue 1.vue页设置 如果是新版web-js的密钥&#xff0c;有配套的安全秘钥&#xff0c;则需要另外在created加入&#xff0c;否则会报undefined window._AMapSecurity…

vue3定位当前位置,获取当前位置的经纬度

vue3定位当前位置&#xff0c;获取当前位置的经纬度 注意事项&#xff08;访问地址必须是https&#xff09;获取当前位置经纬度 注意事项&#xff08;访问地址必须是https&#xff09; 在vue.config.js文件内设置https:true&#xff0c;然后重启一下项目 获取当前位置经纬度 …

新建文本文档

使用百度地图&#xff0c;定位你当前位置并显示 1、准备 注册百度开发者账号到百度地图开放平台创建应用&#xff08;as获取SHA1值&#xff09; 2、将sdk整到你的项目中去 - 在你app的gradle.build中添加 dependencies {...... compile files(libs/baidumapapi_base_v4_0…

web端定位:获取当前地理位置

2019独角兽企业重金招聘Python工程师标准>>> 方法一:html5原生提供的定位: 讲解:在支持HTML5的浏览器下,navigator对象下有一个属性----geolocation,而geolocation属性又有个方法getCurrentPosition(回调函数1,回调函数2)可以通过浏览器向设备发起定位请求,浏…

uniapp 之定位当前位置 (uni.getLocation,腾讯地图,javascript)

第一种 uniapp uniapp 封装的方法可以拿到城&#xff0c;市&#xff0c;县&#xff0c;经纬度。 实例&#xff1a; //获取位置GetLOcation: function() {var that this;uni.getLocation({type: gcj02,success: (res) > {console.log(res)var latitude parseFloat(res.la…

爆款专栏《Python 黑科技》目录导航丨进度:12/50

《Python 快速入门专栏丨掌握基础》和《Python 黑科技丨练习应用》由 CSDN 博客专家丨全站排名 Top 8 的硬核博主 不吃西红柿 倾力打造&#xff0c;旨在帮助大家快速入门掌握 Python。 更有学习资料&#xff0c;简历和 PPT 模板&#xff0c;微信公众号 【信息技术智库】关注我&…

安卓12解除进程限制方法汇总

一、关于安卓12 使用VMOS PRO 借助电脑激活步骤 第一步&#xff0c;使用usb线将手机连接至电脑。 第二步&#xff0c;打开手机的“开发者选项”&#xff0c;打开USB调试开关&#xff0c;确保手机已进入USB调试模式。 第三步&#xff0c;将激活程序包&#xff08;vmos_activa…

电脑技巧:推荐五款非常棒的小众软件,值得收藏

目录 1、Foodie&#xff08;美食相机&#xff09; 2、黑阈APP 3、Sleep Cycle 睡眠助手APP 4、烧杯——化验APP 5、123看图器 今天小编给大家分享五款非常棒的小众软件&#xff0c;生活中非常实用&#xff0c;感兴趣的朋友欢迎收藏&#xff01; 1、Foodie&#xff08;美食相…

永恒之黑漏洞复现

永痕之黑 1. 永恒之黑漏洞相关信息 漏洞介绍 https://nvd.nist.gov/vuln/detail/CVE-2020-0796 漏洞影响版本&#xff1a; Windows 10 Version 1903 for 32-bit Systems Windows 10 Version 1903 for x64-based Systems Windows 10 Version 1903 for ARM64-based Systems Wi…

手机技巧:推荐一款手机省电、提升流畅度APP

目录 软件详情 基本介绍 软件功能 软件特色 使用方法 软件对比 结论 今天给大家推荐一款手机省电、提升流畅度APP&#xff0c;感兴趣的朋友可以下载一下&#xff01; 软件详情 黑阈app是一款非常实用的系统优化类手机APP。使用它能够禁止软件后台运行耗电&#xff0c;既…

linux usb 黑 白 名单_安卓手机如何一键提升手机性能?用黑阈

安卓手机现状 安卓现在的旗舰机并不比苹果差&#xff0c;但是依然对手机小白很不友好&#xff0c;安卓属于开源&#xff0c;自由度较大&#xff0c;可供发挥的空间更高。需要一定基础才能充分利用安卓的性能。而苹果依然是针对小白的&#xff0c;系统会自行优化&#xff0c;自由…

如何root安卓手机_安卓手机如何一键提升手机性能?用黑阈

安卓手机现状 安卓现在的旗舰机并不比苹果差&#xff0c;但是依然对手机小白很不友好&#xff0c;安卓属于开源&#xff0c;自由度较大&#xff0c;可供发挥的空间更高。需要一定基础才能充分利用安卓的性能。而苹果依然是针对小白的&#xff0c;系统会自行优化&#xff0c;自由…

黑阈使用方法

一、从各大应用市场载「 黑阈 」。 二、切换到「 使用 」的页面&#xff0c;选择「 进入黑阈 」 三、打开「 开发者选项 」跟 「 USB调试 」 四、连接 USB &#xff0c;允许 USB 调试 五、电脑打开下面这个网页&#xff0c;下载相应的 SDK。 https://developer.android.goo…

使用树莓派3b+作为黑阈激活器

黑阈&#xff08;y&#xff09;不需要 root 就能待机&#xff08;App Standby&#xff0c;Android 6.0 引入&#xff0c;部分设备不支持&#xff09;或强行停止应用&#xff0c;防止应用持续运行。 黑阈不处理非“黑阈清单”内应用。当您启动应用&#xff0c;使用完退出&#x…

枚举类型是什么

C语言详解 - 枚举类型 注&#xff1a;以下全部代码的执行环境为VC 6.0 在程序中&#xff0c;可能需要为某些整数定义一个别名&#xff0c;我们可以利用预处理指令#define来完成这项工作&#xff0c;您的代码可能是&#xff1a; #define MON 1 #define TUE 2 #define WED 3 …

ts枚举类

参考官方文档:https://www.tslang.cn/docs/handbook/enums.html 理解:枚举是列举固定几个值,直接定义变量的话的话可以随意定义&#xff0c;枚举只能使用你定义好的几个值,枚举是个类&#xff0c;定义的值是基本类型,类能有更多操作 例如你定义一个方法接收一个参数&#xff0…

Java 枚举类型原理分析为什么枚举比用静态变量多消耗两倍的内存

一 起源&#xff1a;枚举是一种特殊的数据类型&#xff0c;一般用来列举有限个、同类型的常量。它能保证参数的安全性&#xff0c;如方法声明传入的参数&#xff0c;必须是指定枚举中的常量。但是Android开发文档指出&#xff0c;使用枚举会比使用静态变量多消耗2倍内存。为什么…