Android Geocoder(位置解析)
Android中提供GPS定位服务,同时开发者可以对获得的位置信息进行解析,可以获得位置的详细信息。
1.gps定位
在Eclipse中建立android应用程序。android sdk中提供了locationmanager来获得系统提供的定位服务,可以通过gps、network等定位。通过下面的代码能够获取location对象,而通过location可以获得经纬度信息。
LocationManager loactionmanager=(LocationManager) getSystemService(Context.LOCATION_SERVICE);
tv_msg=(TextView)findViewById(R.id.textView1);
Criteria criteria=new Criteria();
criteria.setAccuracy(Criteria.ACCURACY_FINE);
criteria.setAltitudeRequired(false);
criteria.setBearingRequired(false);
criteria.setCostAllowed(false);
criteria.setPowerRequirement(Criteria.POWER_LOW);
String provider=loactionmanager.getBestProvider(criteria, true);
Location location=loactionmanager.getLastKnownLocation(provider);
获取服务
通过Criteria为对象指定一些参数。criteria提供若干方法:
(1)public void setAccuracy(int accuracy)
位置解析的精度。Criteria.Accuracy_Fine 精确模式,Criteria.Accuracy_Coarse 模糊模式。
(2)public void setAltitudeRequired(boolean altitude)
是否提供海拔高度信息
(3)public void setBearingRequired(boolean)
是否提供方向信息
(4)public void setPowerRequirement(int level)
电池消耗,无、低、中、高,参数 Criteria. NO_REQUIREMENT, Criteria. POWER_LOW, Criteria.POWER_MEDIUM, or Criteria. POWER_HIGH
(5) public void setCostAllowed(boolean)
是否允许运行商计费。
2.gps位置解析
以前进行位置解析的时候,有人通过访问Google提供的服务进行位置解析,那样真的比较耗时,对于手机用户来说,体验真的很重要,今天无意中看见可以通过别的方法来进行位置的解析。android sdk 中提供了 Geocoder类来进行位置的解析。通过geocoder的getFromLocation(double lattitude,double longtitude,int maxresults)来获取地址列表,三个参数分别为:纬度、经度、返回的结果数。同时geocoder的getlocationfrom方法是同步的,因此,它们进行查找时将会阻碍线程,所以不应该放入UI线程,应该放入后台,也就是通过异步线程来实现。
public class GeocodeAddress extends AsyncTask<Location, Void, String>
{ @Override
protected void onPreExecute() {
// TODO Auto-generated method stub
super.onPreExecute();
}
@Override
protected String doInBackground(Location... params) {
// TODO Auto-generated method stub
if(params[0]!=null)
{
Geocoder geocoder=new Geocoder(MainActivity.this);
try {
List<Address> address=geocoder.getFromLocation(params[0].getLatitude(), params[0].getLongitude(), 1);
msg="";
if(address.size()>0)
{
msg+="经度:"+String.valueOf(address.get(0).getLongitude()*1E6)+"\n";
msg+="纬度:"+String.valueOf(address.get(0).getLatitude()*1E6)+"\n";
msg+="国家:"+address.get(0).getCountryName()+"\n";
msg+="省:"+address.get(0).getAdminArea()+"\n";
msg+="城市:"+address.get(0).getLocality()+"\n";
msg+="名称:"+address.get(0).getAddressLine(1)+"\n";
msg+="街道:"+address.get(0).getAddressLine(0);
return msg;
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
return null;
}
@Override
protected void onPostExecute(String result) {
// TODO Auto-generated method stub
if(result!=null&&result!="")
{
tv_msg.setText(result);
}
} }
位置解析
这里的geoceAddress 是继承asynctask异步类,参数分别为:location,传进来的参数类型;Void,异步线程处理的进度,String,返回的结果类型。
doInBackground(Params) :用来处理比较耗时的操作,返回结果
onPostExecute:获取处理的结果,并可以进行ui的更新。
onProgressUpdate:数据处理的进度
3.位置反向解析
位置反向解析,是指通过位置信息获取经纬度地址。
List<Address> geoaddress= geocoder.getFromLocationName(String locationname, int maxresult);
参数:locationname:位置的名称信息,如南京大学,北京大学等。
maxresults:返回的结果数。从1到5.
double lattitude=geoaddress.get(0).getLatitude();//获取纬度
double longtitude=geoaddress.get(0).getLongitude();//获取经度
更多详细,请参照androidsdk文档。
Android Geocoder(位置解析)的更多相关文章
- Android实现XML解析技术
转载:Android实现XML解析技术 本文介绍在Android平台中实现对XML的三种解析方式. XML在各种开发中都广泛应用,Android也不例外.作为承载数据的一个重要角色,如何读写XML成为 ...
- Android ActionBar完全解析,使用官方推荐的最佳导航栏(上)
转载请注明出处:http://blog.csdn.net/guolin_blog/article/details/18234477 本篇文章主要内容来自于Android Doc,我翻译之后又做了些加工 ...
- Android ViewDragHelper完全解析 自定义ViewGroup神器
Android ViewDragHelper完全解析 自定义ViewGroup神器 转载请标明出处: http://blog.csdn.net/lmj623565791/article/detai ...
- Android ActionBar全然解析,使用官方推荐的最佳导航栏(上)
转载请注明出处:http://blog.csdn.net/guolin_blog/article/details/18234477 本篇文章主要内容来自于Android Doc.我翻译之后又做了些加工 ...
- Android DiskLruCache完全解析,硬盘缓存的最佳方案
Android DiskLruCache完全解析,硬盘缓存的最佳方案 概述 记得在很早之前,我有写过一篇文章Android高效加载大图.多图解决方案,有效避免程序OOM,这篇文章是翻译自Andro ...
- 【Android开发精要笔记】Android组件模型解析
Android组件模型解析 Android中的Mashup 将应用切分成不同类别的组件,通过统一的定位模型和接口标准将他们整合在一起,来共同完成某项任务.在Android的Mashup模式下,每个组件 ...
- 【转】Android ActionBar完全解析,使用官方推荐的最佳导航栏(上)
转载请注明出处:http://blog.csdn.net/guolin_blog/article/details/18234477 本篇文章主要内容来自于Android Doc,我翻译之后又做了些加工 ...
- Android View系统解析(下)
转载请注明出处:http://blog.csdn.net/singwhatiwanna/article/details/38426471(来自singwhatiwanna的csdn博客) Androi ...
- 二、Android XML数据解析
XML,可扩展标记语言.可以用来存储数据,可以看做是一个小型的数据库,SharedPreference就是使用XML文件存储数据的,SQLite底层也是一个XML文件,而在网络应用方面,通常作为信息的 ...
随机推荐
- css解决文字垂直居中
参考链接: http://www.cnblogs.com/lufy/archive/2012/09/12/2681972.html http://zhidao.baidu.com/question ...
- 【js】判断设备类型,访问相应的网站
引入 function uaredirect(f) { try { if (document.getElementById("bdmark") != null) { return ...
- uva 1596 Bug Hunt
In this problem, we consider a simple programming language that has only declarations of one-dimensi ...
- DOM2定位与高宽类属性专题学习【DOM专题学习系列(一)】
网页可见区域宽: document.body.clientWidth;网页可见区域高: document.body.clientHeight;网页可见区域宽: document.body.offset ...
- Linux中的ln
在安装了wdcp或在正常使用wdcp后,如有意无意用使用了yum更新系统或安装软件,有时会直接更新安装了yum源里的apache,这时问题就来了打开所有的网站或页面,都是提示Apache欢迎页面 这个 ...
- PHP中__autoload()的不解之处,求高手指点
一整段代码: 运行结果: 使用__autoload(),分为两页代码: 第一段代码: ACMEManager.php,代码如下: 运行结果:
- python运维开发(十九)----Django后台表单验证、session、cookie、model操作
内容目录: Django后台表单验证 CSRF加密传输 session.cookie model数据库操作 Django后台Form表单验证 Django中Form一般有2种功能: 1.用于做用户提交 ...
- [XMPP]iOS聊天软件学习笔记[四]
昨天完成了聊天界面,基本功能算告一段落 开发时间:五天(工作时间) 开发工具:xcode6 开发平台:iOS8 XMPP框架:XMPPFramework git clone https://githu ...
- USB系列之四:向U盘上写数据
在<USB系列之三>中,我们实现了一系列的SCSI命令,在这个系列中,我们要实现向U盘上写扇区的命令,所以,本文相对比较容易,更多地是给出一个实现的源程序. 在<USB系列之三> ...
- WPF笔记(2.3 StackPanel)——Layout
原文:WPF笔记(2.3 StackPanel)--Layout StackPanel用于小规模的排版布局,比如说一个局部下几个textbox和Button啦.Orientation属性有Vertic ...