android使用地图编程,基于Android实现百度地图定位过程详解
一、问题描述
LBS位置服务是android应用中重要的功能,应用越来越广泛,下面我们逐步学习和实现lbs相关的应用如定位、地图、导航等,首先我们看如何基于百度地图实现定位功能
二、配置环境
2、下载定位SDK,并导入SDK如图所示:
三、编写MyApplication类
编写MyApplication类,为了使用方便我们可以将实现定位的方法封装的Application组件中
封装下列方法
1、 获取定位信息——requestLocationInfo()
2、 通过广播发送位置信息——sendBroadCast()
3、 停止定位——stopLocationClient()
public class MyApplication extends Application{
public LocationClient mLocationClient = null;
public GeofenceClient mGeofenceClient;
public MyLocationListenner myListener = new MyLocationListenner();
public static String TAG = "MyApplication";
private static MyApplication mInstance = null;
@Override
public void onCreate(){
mInstance = this;
mLocationClient = new LocationClient(this);
/**
* 项目的key,自己到官网申请 http://lbsyun.baidu.com/apiconsole/key
*/
mLocationClient.setAK("你的应用Key");
mLocationClient.registerLocationListener(myListener);
mGeofenceClient = new GeofenceClient(this);
super.onCreate();
Log.d(TAG, "... Application onCreate... pid=" + Process.myPid());
}
public static MyApplication getInstance(){
return mInstance;
}
/**
* 停止定位
*/
public void stopLocationClient(){
if (mLocationClient != null && mLocationClient.isStarted()){
mLocationClient.stop();
}
}
/**
* 发起定位
*/
public void requestLocationInfo(){
setLocationOption();
if (mLocationClient != null && !mLocationClient.isStarted()){
mLocationClient.start();
}
if (mLocationClient != null && mLocationClient.isStarted()){
mLocationClient.requestLocation();
}
}
/**
* 设置百度地图的相关参数
*/
private void setLocationOption(){
LocationClientOption option = new LocationClientOption();
option.setOpenGps(true); // 打开gps
option.setCoorType("bd09ll"); // 设置坐标类型
option.setServiceName("com.baidu.location.service_v2.9");
option.setPoiExtraInfo(true);
option.setAddrType("all");
option.setPoiNumber(10);
option.disableCache(true);
mLocationClient.setLocOption(option);
}
/**
* 监听函数,有更新位置的时候,格式化成字符串,输出到屏幕中
*/
public class MyLocationListenner implements BDLocationListener
{
@Override
public void onReceiveLocation(BDLocation location){
if (location == null){
sendBroadCast("定位失败!");
return;
}
sendBroadCast(location.getAddrStr());
}
public void onReceivePoi(BDLocation poiLocation){
if (poiLocation == null){
sendBroadCast("定位失败!");
return;
}
sendBroadCast(poiLocation.getAddrStr());
}
}
/**
* 得到发送广播
* @param address
*/
public void sendBroadCast(String address){
stopLocationClient();
Intent intent = new Intent(MainActivity.LOCATION_BCR);
intent.putExtra("address", address);
sendBroadcast(intent);
}
}
三、 主程序MainActivity
public class MainActivity extends Activity{
public static String TAG = "LocTestDemo";
private BroadcastReceiver broadcastReceiver;
public static String LOCATION_BCR = "location_bcr";
private Button locBtn;
private TextView locInfo;
private MyApplication application;
@Override
protected void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
application=(MyApplication)super.getApplication();
initialize();
initializeViews();
initializeListeners();
}
private void initialize(){
registerBroadCastReceiver();//注册广播
}
private void initializeViews()
{
locBtn = (Button) findViewById(R.id.location);
locInfo = (TextView) findViewById(R.id.location_info);
}
private void initializeListeners()
{
locBtn.setOnClickListener(new OnClickListener(){
@Override
public void onClick(View v){
locInfo.setText("定位中...");
//调用请求定位信息
application.requestLocationInfo();
}
});
}
/**
* 注册一个广播,监听定位结果,接受广播获得地址信息
*/
private void registerBroadCastReceiver()
{
broadcastReceiver = new BroadcastReceiver(){
public void onReceive(Context context, Intent intent){
String address = intent.getStringExtra("address");
locInfo.setText(address);
}
};
IntentFilter intentToReceiveFilter = new IntentFilter();
intentToReceiveFilter.addAction(LOCATION_BCR);
registerReceiver(broadcastReceiver, intentToReceiveFilter);
}
@Override
protected void onDestroy(){
super.onDestroy();
unregisterReceiver(broadcastReceiver);
}
}
四、 AndroidManifest.xml配置信息
package="com.jereh.baidulocation"
android:versionCode="1"
android:versionName="1.0" >
android:minSdkVersion="8"
android:targetSdkVersion="17" />
android:name="com.jereh.baidulocation.MyApplication"
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
android:name="com.jereh.baidulocation.MainActivity"
android:label="@string/app_name" >
android:name="com.baidu.location.f"
android:enabled="true"
android:process=":remote" >
android使用地图编程,基于Android实现百度地图定位过程详解相关推荐
- android 蓝牙hf编程,基于Android蓝牙Inband ring功能实现.doc
基于Android蓝牙Inband ring功能实现 基于Android蓝牙Inband ring功能实现 [摘要] 蓝牙作为一种短距无线数据与语音传输的开放性全球规范,目前在整个世界范围内都得到了很 ...
- Android APK文件结构 完整打包编译的流程 APK安装过程 详解
Android apk文件结构 打包编译的流程 Android官网 配置构建 流程 Configure your build The build process APK文件结构 assets res ...
- python爬百度翻译-Python爬虫实现百度翻译功能过程详解
首先,需要简单的了解一下爬虫,尽可能简单快速的上手,其次,需要了解的是百度的API的接口,搞定这个之后,最后,按照官方给出的demo,然后写自己的一个小程序 打开浏览器 F12 打开百度翻译网页源代码 ...
- python实现翻译功能_Python爬虫实现百度翻译功能过程详解
首先,需要简单的了解一下爬虫,尽可能简单快速的上手,其次,需要了解的是百度的API的接口,搞定这个之后,最后,按照官方给出的demo,然后写自己的一个小程序 打开浏览器 F12 打开百度翻译网页源代码 ...
- 多功能复合机基于用户认证功能的实现过程详解
多功能复合机基于用户认证功能的实现方法 -----网络设备共享案例分析 公司需求:***是一家租售写字楼的服务性企业, ...
- python做一副54扑克牌发牌_基于Python制作一副扑克牌过程详解
整理一下通过本文分享给大家, 该案例是通过 Python 类属性创建一幅除去大王.小王之后的 52 张扑克牌,并实现随机抽牌.排序.洗牌等功能: 创建一个纸牌类 一副扑克除去大王小王之外,剩下的 52 ...
- python随机输出52张牌_基于Python制作一副扑克牌过程详解
整理一下通过本文分享给大家, 该案例是通过 Python 类属性创建一幅除去大王.小王之后的 52 张扑克牌,并实现随机抽牌.排序.洗牌等功能: 创建一个纸牌类 一副扑克除去大王小王之外,剩下的 52 ...
- vscode 调试html页面,基于VSCode调试网页JavaScript代码过程详解
一.调试准备 Windows10 64bits IDE:Visual Studio Code1.28.2 安装插件:Chrome(安装方法:Debug -> Install Additional ...
- lc filter在matlab哪,基于python实现matlab filter函数过程详解
matlab中的filter函数: y = filter(b,a,x) python实现matlab中的filter函数 def filter_matlab(b,a,x): y = [] y.appe ...
- matlab filter函数原理,基于python实现matlab filter函数过程详解
matlab中的filter函数: y = filter(b,a,x) python实现matlab中的filter函数 def filter_matlab(b,a,x): y = [] y.appe ...
最新文章
- 用composer安装laravel-bjyblog
- 异步爬虫框架与协程浅析
- 为什么要学习响应式设计
- 求数组的最大子数组和最大子数组的和
- python如何实现多进程_Python实现多进程的四种方式
- 国内程序员最容易发音错误的单词集合
- 利用阿里云自定义镜像实现服务器数据/网站快速迁移
- 韵乐x5最佳参数手动_4种超参数调整技术及其局限性
- php根据id查找条件怎么写_thinkphp where()条件查询
- OpenShift 4 - 安装 OpenShift 集群后如何删除节点或增加新节点
- hadoop中的序列化和反序列化
- 华为海思智能手机处理器及其参数对比
- 开学必备宿舍神器,续航好的蓝牙耳机推荐
- 程序员的自我修养(收藏)
- 小学生学计算机步骤,小学生计算机入门“五步走”
- 硬盘损坏的解决方法(MBR主引导记录的恢复)
- #442 不叁不肆:独居,阳了,没事,快好了
- flink的基础介绍
- linux xdm服务无法关闭,Linux远程操控XDM认识和配置
- python自动下载酷狗音乐_Python下载酷狗音乐
热门文章
- 拓端tecdat|R语言参数检验 :需要多少样本?如何选择样本数量
- linux下MySQL密码修改过程记录
- 【深度学习】论文导读:GoogLeNet模型,Inception结构网络简化(Going deeper with convolutions)
- DeepLearning tutorial(7)深度学习框架Keras的使用-进阶
- Keras中的时间分布层TimeDistributed Layer使用教程
- 淘沙潜行,数一数英雄的多姿,王者荣耀英雄、皮肤、武器展览
- Python命令行程序项目自动化GUI显示操作神器Gooey实践
- python实践winrm,实现远程连接Windows服务器,并执行指定命令
- opencv 滑动条创建
- linux docker位置查找,linux – 如何在Docker中获取依赖子图像列表?