Android开发——百度地图定位
Android开发——百度地图定位
- 项目需求
- 项目内容
- 注册和获取秘钥
- 获取项目SHA1码
- 获取项目AK码
- AS依赖配置
- AS源码
- AndroidManifest文件
- 布局文件
- DemoApplication文件
- MainActivity文件
- 结果展示
- 源码地址
项目需求
通过AS软件连接手机,并使用百度地图显示手机当前定位,以及手机位置的经纬度
项目内容
注册和获取秘钥
获取项目SHA1码
获取项目AK码
- 进入百度地图开放平台,控制台创建应用
- 在我的应用中,查看自己的AK码
AS依赖配置
- 在百度地图开放平台中,选择产品下载,进入到以下页面
![在这里插入图片描述] - 下载后解压,将解压后libs文件夹下面的文件全部复制到项目文件中的libs中
- 在app目录下的build.gradle文件中android块中配置sourceSets标签
- 在libs目录下,选中jar文件(BaiduLbs_Android.jar)右键,选择Add As Library…(因为已经添加过,所以这里无法点击)
AS源码
AndroidManifest文件
- 权限设置
<!-- 访问网络,进行地图相关业务数据请求,包括地图数据,路线规划,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" />
- 在中加入如下代码配置开发密钥(AK)
<application> <meta-data android:name="com.baidu.lbsapi.API_KEY" android:value="开发者 key" />
</application>
- 在中声明DemoAppliction
android:name = ".DemoApplication"
- 在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文件
- 动态申请访问权限
@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;}}
- 构造地图数据,并且通过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());}}
- 开启地图的定位图层并通过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();}
- 在关闭应用的同时,关闭地图
@Overrideprotected void onDestroy() {mLocationClient.stop();mBaiduMap.setMyLocationEnabled(false);mMapView.onDestroy();mMapView = null;super.onDestroy();}
结果展示
源码地址
https://gitee.com/liu_peilin/baidu_location.git
Android开发——百度地图定位相关推荐
- android开发百度地图定位到几内亚湾问题的解决
android开发一直定位的几内亚湾,这个问题我大概停在这里3,4天,看网上的各种回答试了很多都不行,头疼.偶然看到一位大佬写的具体定位代码的写法,解决了这个问题.原博客https://blog.cs ...
- android开发百度地图定位到大西洋去了!!
我采用的是TabHost+activity的方式实现界面的跳转,我将调用地图和监听定位的代码写到另外的类里,类结构如下: Map.java实现调用显示地图,MyOrientationListener. ...
- android开发 百度地图 定位+搜索周边+点击兴趣点+显示旗袍,高德地图API之地图搜索+兴趣点POI+标记点操作...
使用AMap.Autocomplete() 自动补全插件,实现搜索功能 metacharset="UTF-8"title>map style>*{margin:0;pa ...
- qt for android开发百度地图(一步步带图详解)
qt for android开发百度地图 前言:qt for android开发百度地图,其实找了很多资料,基本上没有,就自己折磨弄了出来,这个过程还是很曲折的,折磨了一两个星期,没有资料,就两个字' ...
- 基于Android的百度地图定位开发
百度地图定位 一.注册和获取密钥 1.获取SHA1 2.获取包名 二.AS配置 三.显示地图开发 1.添加地图权限 2.添加地图容器 3.地图初始化 4.创建地图Activity,管理MapView生 ...
- android百度定位代码,android开发:百度地图及定位的演示代码
//百度地图定位的代码,需要加载百度地图API的SDK LocationClient client = new LocationClient(mContext); LocationClientOpti ...
- unlegal android,cordova-plugin-baidumaplocation百度地图定位Cordova插件
百度地图定位Cordova插件,支持Android,IOS 可以在此地址查看example 基于百度地图Android版定位SDK(v7.1)以及百度地图IOS SDK (v3.2.1) 一,申请An ...
- flutter 实现Android端百度地图定位
1.先在百度地图官网申请百度地图AK 百度地图开放平台 | 百度地图API SDK | 地图开发 2.安装flutter百度地图插件 #百度定位flutter_bmflocation: ^1.0.4# ...
- Android使用百度地图定位并显示手机位置后使用前置摄像头“偷拍”
今天老板让我验证一下技术可行性,记录下来. 需求 :定位手机的位置并在百度地图上显示,得到位置后使用前置摄像头进行抓拍 拿到这个需求后,对于摄像头的使用不太熟悉,于是我先做了定位手机并在百度地图上显示 ...
最新文章
- Tomcat5集群中的SESSION复制详解
- Linux——自定义服务命令
- 在两个有序的数组中找第N个数,二分查找 O(lgm+lgn)级
- 二维数组常用的赋值方式
- 使用python脚本定时备份web网站
- mysql设置本机可被访问_怎么设置MySQL就能让别人访问本机的数据库了?
- Linux内核源码分析--内核启动之(1)zImage自解压过程(Linux-3.0 ARMv7) 【转】
- (六)Oracle学习笔记—— 约束
- iphone如何信任软件_如何在越狱后 iPhone 上多开软件?
- Flink on Zeppelin (2) - Batch 篇
- 使用COOC软件绘制复杂网络
- jQuery动画高级用法(上)——详解animation中的.queue()函数 http://www.cnblogs.com/hh54188/archive/2011/04/09/1996469.
- 基于MATLAB的机器人学、机器视觉与控制
- c语言编写程序寻找最大公约数,C程序设计编程题库
- Web前端开发技术课程大作业——南京旅游景点介绍网页代码html+css+javascript
- RTF转换为HTML格式(java)
- 小杜滑铲 DFS 最长路径
- QuickHand_PlayerActivity_Player_design_.m3u8视频播放格式(如快手短视频
- 安卓开发实战之app之版本更新升级(DownloadManager和http下载)完整实现
- 展锐UDX710:MMC概述、SD Card驱动解析及调试
热门文章
- python画图代码100行_用100行Python代码告诉你国庆那些景点爆满!
- 哪有什么高效安全运行,只不过是磁盘之间在负重前行 Linux RAID磁盘阵列
- 三言两语 (不定时更)
- Web的打印方案:WebBrowser(WScript.Shell)、ScriptX(即smsx.cab)
- office365服务器没有响应,Win10安装Office365时电脑无响应的原因和解决方案
- ubuntu14.04 wps字体缺失问题
- RHCSA-A2.配置默认软件仓库
- [论文评析]基于人体姿态识别的立定跳远 动作智能评估系统
- UBUNTU12下pyv8 的安装部骤
- 【学习率】梯度下降学习率的设定策略