Android开发——百度地图定位

  • 项目需求
  • 项目内容
    • 注册和获取秘钥
      • 获取项目SHA1码
      • 获取项目AK码
    • AS依赖配置
    • AS源码
      • AndroidManifest文件
      • 布局文件
      • DemoApplication文件
      • MainActivity文件
  • 结果展示
  • 源码地址

项目需求

通过AS软件连接手机,并使用百度地图显示手机当前定位,以及手机位置的经纬度

项目内容

注册和获取秘钥

获取项目SHA1码

获取项目AK码

  1. 进入百度地图开放平台,控制台创建应用

  2. 在我的应用中,查看自己的AK码

AS依赖配置

  1. 在百度地图开放平台中,选择产品下载,进入到以下页面

    ![在这里插入图片描述]
  2. 下载后解压,将解压后libs文件夹下面的文件全部复制到项目文件中的libs中

  3. 在app目录下的build.gradle文件中android块中配置sourceSets标签
  4. 在libs目录下,选中jar文件(BaiduLbs_Android.jar)右键,选择Add As Library…(因为已经添加过,所以这里无法点击)

AS源码

AndroidManifest文件

  1. 权限设置
 <!-- 访问网络,进行地图相关业务数据请求,包括地图数据,路线规划,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" /><!-- 这个权限用于进行网络定位 --><uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /><!-- 这个权限用于访问GPS定位 --><uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
  1. 在中加入如下代码配置开发密钥(AK)
<application>  <meta-data  android:name="com.baidu.lbsapi.API_KEY"  android:value="开发者 key" />
</application>
  1. 在中声明DemoAppliction
android:name = ".DemoApplication"
  1. 在Application标签中声明定位的service组件
<service android:name="com.baidu.location.f"android:enabled="true"android:process=":remote"/>

布局文件


<com.baidu.mapapi.map.MapViewandroid:id="@+id/bmapView"android:layout_width="match_parent"android:layout_height="match_parent"android:clickable="true"/><LinearLayoutandroid:layout_width="match_parent"android:layout_height="60dp"android:background="#CC00BCD4"android:layout_marginTop="0dp"android:orientation="vertical"><TextViewandroid:id="@+id/text1"android:layout_width="match_parent"android:layout_height="wrap_content"android:textColor="#fff" /></LinearLayout>

DemoApplication文件

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

MainActivity文件

  1. 动态申请访问权限
@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);if (ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED) {ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.ACCESS_FINE_LOCATION}, 1);} else {requestLocation();}}@Overridepublic void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {switch (requestCode) {case 1:if (grantResults[0] != PackageManager.PERMISSION_GRANTED) {Toast.makeText(this, "Without Location Permissions!", Toast.LENGTH_SHORT).show();finish();} else {Toast.makeText(this, "Got Location Permissions!", Toast.LENGTH_SHORT).show();requestLocation();}break;}}
  1. 构造地图数据,并且通过textview显示经纬度
// 继承抽象类BDAbstractListener并重写其onReceieveLocation方法来获取定位数据,并将其传给MapViewpublic class MyLocationListener extends BDAbstractLocationListener {@Overridepublic void onReceiveLocation(BDLocation location) {//mapView 销毁后不在处理新接收的位置if (location == null || mMapView == null) {return;}// 如果是第一次定位LatLng ll = new LatLng(location.getLatitude(), location.getLongitude());if (isFirstLocate) {isFirstLocate = false;//给地图设置状态mBaiduMap.animateMapStatus(MapStatusUpdateFactory.newLatLng(ll));}MyLocationData locData = new MyLocationData.Builder().accuracy(location.getRadius())// 此处设置开发者获取到的方向信息,顺时针0-360.direction(location.getDirection()).latitude(location.getLatitude()).longitude(location.getLongitude()).build();mBaiduMap.setMyLocationData(locData);//获取经纬度StringBuilder stringBuilder = new StringBuilder();stringBuilder.append("\n经度:" + location.getLatitude());stringBuilder.append("\n纬度:"+ location.getLongitude());mtextView.setText(stringBuilder.toString());}}
  1. 开启地图的定位图层并通过LocationClient发起定位
private void requestLocation() {setContentView(R.layout.activity_main);//获取地图控件引用mMapView = findViewById(R.id.bmapView);//获取文本显示控件mtextView = findViewById(R.id.text1);// 得到地图mBaiduMap = mMapView.getMap();// 开启定位图层mBaiduMap.setMyLocationEnabled(true);//定位初始化mLocationClient = new LocationClient(this);//通过LocationClientOption设置LocationClient相关参数LocationClientOption option = new LocationClientOption();option.setOpenGps(true); // 打开gpsoption.setCoorType("bd09ll"); // 设置坐标类型option.setScanSpan(1000);//设置locationClientOptionmLocationClient.setLocOption(option);//注册LocationListener监听器MyLocationListener myLocationListener = new MyLocationListener();mLocationClient.registerLocationListener(myLocationListener);//开启地图定位图层mLocationClient.start();}
  1. 在关闭应用的同时,关闭地图
 @Overrideprotected void onDestroy() {mLocationClient.stop();mBaiduMap.setMyLocationEnabled(false);mMapView.onDestroy();mMapView = null;super.onDestroy();}

结果展示

源码地址

https://gitee.com/liu_peilin/baidu_location.git

Android开发——百度地图定位相关推荐

  1. android开发百度地图定位到几内亚湾问题的解决

    android开发一直定位的几内亚湾,这个问题我大概停在这里3,4天,看网上的各种回答试了很多都不行,头疼.偶然看到一位大佬写的具体定位代码的写法,解决了这个问题.原博客https://blog.cs ...

  2. android开发百度地图定位到大西洋去了!!

    我采用的是TabHost+activity的方式实现界面的跳转,我将调用地图和监听定位的代码写到另外的类里,类结构如下: Map.java实现调用显示地图,MyOrientationListener. ...

  3. android开发 百度地图 定位+搜索周边+点击兴趣点+显示旗袍,高德地图API之地图搜索+兴趣点POI+标记点操作...

    使用AMap.Autocomplete() 自动补全插件,实现搜索功能 metacharset="UTF-8"title>map style>*{margin:0;pa ...

  4. qt for android开发百度地图(一步步带图详解)

    qt for android开发百度地图 前言:qt for android开发百度地图,其实找了很多资料,基本上没有,就自己折磨弄了出来,这个过程还是很曲折的,折磨了一两个星期,没有资料,就两个字' ...

  5. 基于Android的百度地图定位开发

    百度地图定位 一.注册和获取密钥 1.获取SHA1 2.获取包名 二.AS配置 三.显示地图开发 1.添加地图权限 2.添加地图容器 3.地图初始化 4.创建地图Activity,管理MapView生 ...

  6. android百度定位代码,android开发:百度地图及定位的演示代码

    //百度地图定位的代码,需要加载百度地图API的SDK LocationClient client = new LocationClient(mContext); LocationClientOpti ...

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

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

  8. flutter 实现Android端百度地图定位

    1.先在百度地图官网申请百度地图AK 百度地图开放平台 | 百度地图API SDK | 地图开发 2.安装flutter百度地图插件 #百度定位flutter_bmflocation: ^1.0.4# ...

  9. Android使用百度地图定位并显示手机位置后使用前置摄像头“偷拍”

    今天老板让我验证一下技术可行性,记录下来. 需求 :定位手机的位置并在百度地图上显示,得到位置后使用前置摄像头进行抓拍 拿到这个需求后,对于摄像头的使用不太熟悉,于是我先做了定位手机并在百度地图上显示 ...

最新文章

  1. Tomcat5集群中的SESSION复制详解
  2. Linux——自定义服务命令
  3. 在两个有序的数组中找第N个数,二分查找 O(lgm+lgn)级
  4. 二维数组常用的赋值方式
  5. 使用python脚本定时备份web网站
  6. mysql设置本机可被访问_怎么设置MySQL就能让别人访问本机的数据库了?
  7. Linux内核源码分析--内核启动之(1)zImage自解压过程(Linux-3.0 ARMv7) 【转】
  8. (六)Oracle学习笔记—— 约束
  9. iphone如何信任软件_如何在越狱后 iPhone 上多开软件?
  10. Flink on Zeppelin (2) - Batch 篇
  11. 使用COOC软件绘制复杂网络
  12. jQuery动画高级用法(上)——详解animation中的.queue()函数 http://www.cnblogs.com/hh54188/archive/2011/04/09/1996469.
  13. 基于MATLAB的机器人学、机器视觉与控制
  14. c语言编写程序寻找最大公约数,C程序设计编程题库
  15. Web前端开发技术课程大作业——南京旅游景点介绍网页代码html+css+javascript
  16. RTF转换为HTML格式(java)
  17. 小杜滑铲 DFS 最长路径
  18. QuickHand_PlayerActivity_Player_design_.m3u8视频播放格式(如快手短视频
  19. 安卓开发实战之app之版本更新升级(DownloadManager和http下载)完整实现
  20. 展锐UDX710:MMC概述、SD Card驱动解析及调试

热门文章

  1. python画图代码100行_用100行Python代码告诉你国庆那些景点爆满!
  2. 哪有什么高效安全运行,只不过是磁盘之间在负重前行 Linux RAID磁盘阵列
  3. 三言两语 (不定时更)
  4. Web的打印方案:WebBrowser(WScript.Shell)、ScriptX(即smsx.cab)
  5. office365服务器没有响应,Win10安装Office365时电脑无响应的原因和解决方案
  6. ubuntu14.04 wps字体缺失问题
  7. RHCSA-A2.配置默认软件仓库
  8. [论文评析]基于人体姿态识别的立定跳远 动作智能评估系统
  9. UBUNTU12下pyv8 的安装部骤
  10. 【学习率】梯度下降学习率的设定策略