这里使用讲解的是androidStudio下开发android应用,实现百度地图定位功能的辅助教程。
登入百度地图API官方网站http://lbsyun.baidu.com/
在主页中选择开发->Android定位sdk,我们可以看到有很多的教程,包括教你获取秘钥,开发指南等等。具体我就不再赘述了,可以看上面的开发指南,这篇文章主要针对app中加入百度定位的一些细节方面的操作。
接着选择相关下载->全部下载,进入之后可以看到如下界面。我们这里只勾选全量定位即可。

点击下载开发包,当然你也可以下载示例代码和参考类。
下载好开发包之后可以解压看到如下目录结构:


有可能你会问这些是干嘛用的,其实这些都是动态链接库,针对不同架构的android手机cpu百度编写了不同的库文件,目的是为了适配不同的CPU架构,如果你选择了多个功能的开发包,会发现非常大,这时我们就得取舍,我们只要留下armeabi和 armeabi-v7a 这两文件的库就行了,基本上市面机子都ok。

知识提示:
armeabi就是针对普通的或旧的arm v5 cpu,armeabi-v7a是针对有浮点运算或高级扩展功能的arm v7 cpu。
armeabi-v7a(32位ARM设备),arm64-v8a(64位ARM设备)。

对于.so文件放哪,你可能会感到困惑,如下总结:
- AndroidStudio工程放在jniLibs/ABI目录中(当然也可以通过在build.gradle文件中的设置jniLibs.srcDir属性自己指定);
- Eclipse工程放在libs/ABI目录中(这也是ndk-build命令默认生成.so文件的目录);
- AAR压缩包中位于jni/ABI目录中(.so文件会自动包含到引用AAR压缩包的APK中);
- 最终在APK文件中的lib/ABI目录中
通过PackageManager安装后,在小于Android 5.0的系统中,.so文件位于app的nativeLibraryPath目录中;在大于等于Android 5.0的系统中,.so文件位于app的nativeLibraryRootDir/CPU_ARCH目录中。

接下来是将这些库文件以及jar包导入到android工程中,如下操作,这里就将百度地图的动态链接库全部导入到应用中吧,全部复制粘贴到libs目录下:

将jar包选择右键,Add As Library,这样成功将jar包导入,图中没有显示库文件,是因为楼主截图不是同一个工程导致。正常将会显示出库文件,请谅解。

当然你也可以通过Project Structure的方式将jar包导入,如下操作:


完成jar包的导入,可以看到在android工程的Gradle(Module:app)文件中看到如下的描述,这意味着,您的jar包导入成功了。

下面是导入后的libs目录结构:

由于百度地图定位需要用到动态链接库,我们需要在Gradle(Module:app)文件中添加如下代码:

sourceSets {main {jniLibs.srcDirs = ['libs']}}

还需要在Manifests文件中声明服务以及配置秘钥,如下:


对了,别忘了还要声明一些权限,详情请看官方开发指南
好了这样百度地图定位的准备工作就基本做好了。现在你就可以看百度的图的开发指南,进行代码的编写
官方开发指南地址:http://lbsyun.baidu.com/index.php?title=android-locsdk/guide/getloc

作者在做自己项目时写了个工具类,方便操作:

public class BDLocationUtils implements BDLocationListener {private static BDLocationUtils bdLocationUtils;public LocationClient mLocationClient = null;private String describe = "";private List<Poi> locationPoiList = new ArrayList<>();private List<String> locationList = new ArrayList<>();private String address;public static BDLocationUtils newInstance(Context context) {if (bdLocationUtils == null) {bdLocationUtils = new BDLocationUtils(context);}return bdLocationUtils;}public BDLocationUtils(Context context) {System.out.println("bdlocation");mLocationClient = new LocationClient(context);     //声明LocationClient类initLocation();mLocationClient.registerLocationListener(this);    //注册监听函数mLocationClient.start();}/*** 初始化位置获取设置*/private void initLocation() {LocationClientOption option = new LocationClientOption();option.setLocationMode(LocationClientOption.LocationMode.Hight_Accuracy);//可选,默认高精度,设置定位模式,高精度,低功耗,仅设备option.setCoorType("bd09ll");//可选,默认gcj02;设置返回的定位结果坐标系// int span = 1000;//option.setScanSpan(span);//可选,默认0,即仅定位一次,设置发起定位请求的间隔需要大于等于1000ms才是有效的option.setIsNeedAddress(true);//可选,设置是否需要地址信息,默认不需要option.setOpenGps(false);//可选,默认false,设置是否使用gpsoption.setLocationNotify(false);//可选,默认false,设置是否当gps有效时按照1S1次频率输出GPS结果option.setIsNeedLocationDescribe(false);//可选,默认false,设置是否需要位置语义化结果,可以在BDLocation.getLocationDescribe里得到,结果类似于“在北京天安门附近”option.setIsNeedLocationPoiList(true);//可选,默认false,设置是否需要POI结果,可以在BDLocation.getPoiList里得到option.setIgnoreKillProcess(false);//可选,默认true,定位SDK内部是一个SERVICE,并放到了独立进程,设置是否在stop的时候杀死这个进程,默认不杀死option.SetIgnoreCacheException(false);//可选,默认false,设置是否收集CRASH信息,默认收集option.setEnableSimulateGps(true);//可选,默认false,设置是否需要过滤gps仿真结果,默认需要mLocationClient.setLocOption(option);}@Overridepublic void onReceiveLocation(BDLocation location) {System.out.println("bdlocation listener。");//Receive LocationStringBuffer sb = new StringBuffer(256);
//        sb.append("time : ");
//        sb.append(location.getTime());
//        sb.append("\nerror code : ");
//        sb.append(location.getLocType());sb.append("\nlatitude : ");sb.append(location.getLatitude());//latitude = location.getLatitude();MyApplication.location.setLatitude(location.getLatitude());//纬度sb.append("\nlontitude : ");sb.append(location.getLongitude());//经度MyApplication.location.setLatitude(location.getLongitude());//longitude = location.getLongitude();
//        sb.append("\nradius : ");
//        sb.append(location.getRadius());if (location.getLocType() == BDLocation.TypeGpsLocation) {// GPS定位结果
//            sb.append("\nspeed : ");
//            sb.append(location.getSpeed());// 单位:公里每小时
//            sb.append("\nsatellite : ");
//            sb.append(location.getSatelliteNumber());
//            sb.append("\nheight : ");
//            sb.append(location.getAltitude());// 单位:米
//            sb.append("\ndirection : ");
//            sb.append(location.getDirection());// 单位度sb.append("\naddr : ");//sb.append(location.getAddrStr());address = location.getAddrStr();MyApplication.location.setAddress(address);sb.append(address);//Log.i("address:", address);sb.append("\ndescribe : ");sb.append("gps定位成功");describe = "gps定位成功";} else if (location.getLocType() == BDLocation.TypeNetWorkLocation) {// 网络定位结果sb.append("\naddr : ");address = location.getAddrStr();sb.append(address);MyApplication.location.setAddress(address);//运营商信息sb.append("\noperationers : ");sb.append(location.getOperators());sb.append("\ndescribe : ");sb.append("网络定位成功");describe = "网络定位成功";} else if (location.getLocType() == BDLocation.TypeOffLineLocation) {// 离线定位结果sb.append("\ndescribe : ");sb.append("离线定位成功,离线定位结果也是有效的");describe = "离线定位成功,离线定位结果也是有效的";} else if (location.getLocType() == BDLocation.TypeServerError) {sb.append("\ndescribe : ");sb.append("服务端网络定位失败,可以反馈IMEI号和大体定位时间到loc-bugs@baidu.com,会有人追查原因");describe = "服务端网络定位失败";} else if (location.getLocType() == BDLocation.TypeNetWorkException) {sb.append("\ndescribe : ");sb.append("网络不同导致定位失败,请检查网络是否通畅");describe = "服务端网络定位失败";} else if (location.getLocType() == BDLocation.TypeCriteriaException) {sb.append("\ndescribe : ");sb.append("无法获取有效定位依据导致定位失败,一般是由于手机的原因,处于飞行模式下一般会造成这种结果,可以试着重启手机");describe = "无法获取有效定位依据导致定位失败,一般是由于手机的原因,处于飞行模式下一般会造成这种结果,可以试着重启手机";}sb.append("\nlocationdescribe : ");sb.append(location.getLocationDescribe());// 位置语义化信息locationPoiList = location.getPoiList();// POI数据if (locationPoiList != null) {sb.append("\npoilist size = : ");sb.append(locationPoiList.size());locationList.clear();for (Poi p : locationPoiList) {sb.append("\npoi= : ");sb.append(p.getId() + " " + p.getName() + " " + p.getRank());locationList.add(p.getName());}//通知list数据更新}//提示定位结果Log.i("BaiduLocationApiDem", sb.toString());}public void startLocation() {mLocationClient.start();}public void stopLocation() {mLocationClient.stop();}public List<String> getLocationList() {return locationList;}public String getAddress() {return address;}public String getDescribe() {return describe;}
}

获取您当前位置可能的地点:

bdLocationUtils = BDLocationUtils.newInstance(getApplicationContext());
bdLocationUtils.startLocation();
locationList = bdLocationUtils.getLocationList();

locationList存放着可能得地点
下面是获取您当前位置的地点,属于一个范围地点,但不是具体的

bdLocationUtils.getAddress()

当你定位失败的时候,你肯定想有提示一下,那么可以调用如下代码

String describe = bdLocationUtils.getDescribe();

这样,describe就有你想要的信息。
注意,在你的activity中,finish时别忘了调用一下

bdLocationUtils.stopLocation();

以防止内存泄露。

如有问题,请留下您的脚印谢谢。

android 百度地图定位辅助教程相关推荐

  1. Android百度地图开发入门教程

    Android百度地图开发入门教程 1.平台注册登录 2.创建应用 3.Android studio配置 4.代码编写 5.最终效果(建议真机) 1.平台注册登录 登录百度地图开放平台网站注册并登录 ...

  2. Android百度地图API使用教程

    课1 百度地图应用 百度地图.ppt 百度地图API:API文档 http://wiki.lbsyun.baidu.com/cms/androidsdk/doc/v3_2_0/ 67个类:其中6大核心 ...

  3. Android百度地图定位APP,显示出当前位置坐标

    Android百度地图定位APP,显示出当前位置坐标 官网配置百度地图 通过CMD命令获取SHA1 在百度的官网里面创建一个应用 Android配置 显示地图即定位 配置 AndroidManifes ...

  4. android获得图片的坐标,Android百度地图定位后获取周边位置的实现代码

    本文实例讲解Android百度地图定位后获取周边位置的实现代码,分享给大家供大家参考,具体内容如下 效果图: 具体代码: 1.布局文件 android:orientation="vertic ...

  5. unlegal android,百度地图定位 Cordova 插件 cordova-plugin-baidumaplocation

    软件介绍 百度地图定位Cordova插件,支持Android,IOS 可以在此地址查看example 基于百度地图Android版定位SDK(v7.1)以及百度地图IOS SDK (v3.2.1) 一 ...

  6. android 百度地图定位总结

    百度地图用过几次,往往用过即忘,疏于总结,这次归纳一下 api-key, jar导入,Menifest.xml配置参考官方文档, 基于jar包 3.6.1版,地图sdk版本不同,方法会有差异 效果图: ...

  7. android 百度地图定位SDK使用方法

    本以为gps定位就只是拿个经纬度,不会很复杂,结果折腾了一下午才弄好,惭愧啊~ Ps:今天练跆拳道,刚热身就两条腿一起抽筋,难道是平时撸多了......好吧,我想多了,废话不多说,开始入正题~ 首先介 ...

  8. android百度地图定位自定义图标,Android应用开发之android 百度地图自定义圆,更改默认图标等常用方法...

    本文将带你了解Android应用开发之android 百度地图自定义圆,更改默认图标等常用方法,希望本文对大家学Android有所帮助. 总结了一下百度地图常用的方法(前提是集成百度地图环境成功): ...

  9. android百度地图定位自定义图标,百度地图SDK集成及根据坐标实现定位(android studio开发)...

    百度地图SDK集成及根据坐标实现定位(android studio开发) 百度地图SDK集成及根据坐标实现定位(android studio开发) 1.下载百度地图SDK 链接:http://lbsy ...

最新文章

  1. Cissp-【第4章 通信与网络安全】-2021-3-12(446页-475页)
  2. String常用方法总结
  3. TensorFlow——本地加载fashion-mnist数据集
  4. Python dir和vars的区别
  5. 写代码水平的几个发展阶段
  6. 由锚点失效引发的hasLayout探究
  7. 关于K-Means算法
  8. os.environ 和 keras.json
  9. C#客户端嵌入Chrome浏览器的实现(非IE)
  10. 群晖 kodi mysql,用群晖为 Kodi 注入多设备同步能力
  11. WebRoot目录和WebContent目录的区别
  12. 软件科技创新创业基地暑期集训有感
  13. 愿守内心宁静,砥砺此生修行
  14. 在pc电脑上使用地图(百度地图、高德地图等),地图软件是怎么获取pc电脑的所在位置的?
  15. openMP编程详解(囊括所有基本指令)
  16. 2022.3.4总结+45. 跳跃游戏 II 力扣
  17. websocket ws + wss 通信
  18. setFocus不能生效的问题
  19. halcon脚本-条形码识别【附源码】
  20. ORACLE12.1.0.2.0标准版下载地址

热门文章

  1. 2021年全国职业院校技能大赛(中职组)网络安全竞赛试题(7)(总分100分)
  2. 译——冠状病毒:这是全球离岸测试模型的终结吗?
  3. 运动必备的气传导耳机有哪些,推荐四款运动气传导耳机
  4. 海盗分金问题的一种解答
  5. UVA - 1533 (Moving Pegs)
  6. 论文查重率太高怎么进行修改?
  7. vue 高德地图 矢量覆盖物绘制 多边形 线面绘制 1.0
  8. 15款免费艺术院校学生求职简历word模板,四页求职简历模板,含自荐信
  9. 自动控制原理笔记-传递函数
  10. VMware 如何通过现有虚拟机克隆新的虚拟机 (图文)