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文件,而在网络应用方面,通常作为信息的 ...
随机推荐
- JQuery 之事件中的 ----- hover 与 onmouseover 、onmouseout 联系
hover([over,]out) 一个模仿悬停事件(鼠标移动到一个对象上面及移出这个对象)的方法.这是一个自定义的方法,它为频繁使用的任务提供了一种“保持在其中”的状态. 当鼠标移动到一个匹配的元素 ...
- Socket介绍
一 socket协议 Socket协议的形象描述 socket的英文原义是“孔”或“插座”.在这里作为4BDS UNIX的进程通信机制,取后一种意思.socket非常类似于电话插座.以一个国家级电话网 ...
- Windows - 远程桌面无证书
可以从命令行启动远程桌面,输入:mstsc /v:地址:端口 /admin
- MVC 数据列表显示插件大全
Jgrid 官网示例: http://www.trirand.net/demo/aspnet/mvc/jqgrid/ Code Project示例: http://www.codeproject.co ...
- 使用Spring JDBCTemplate简化JDBC的操作
使用Spring JDBCTemplate简化JDBC的操作 接触过JAVA WEB开发的朋友肯定都知道Hibernate框架,虽然不否定它的强大之处,但个人对它一直无感,总感觉不够灵活,太过臃肿了. ...
- Windows7下MySQL5.6.15免安装版的配置(来自yang362046076)
1.下载mysql-5.5.20-win32.zip,解压到D:\dev,D盘的dev文件夹下就会出现mysql-5.5.20-win32目录,将其重命名为mysql. 2.配置MYSQL的环境变量 ...
- mysql 关键字bug
今天运行语句 select * from order; 出现bug: ERROR 1064 (42000): You have an error in your SQL syntax; check t ...
- 掌握string.h里的常用函数
字符串输出函数 puts 格式: puts(字符数组名) 功能:把字符数组中的字符串输出到显示器. 即在屏幕上显示该字符串. 字符串输入函数 gets 格式: gets (字符数组名) 功能:从标 ...
- C++----练习--bool类型作为特别的int要区别对待
1.程序源码: #include<iostream> int main() { ; int i=condition; std::cout<<i<<std::endl ...
- 就是爱Java
就是爱Java,提供了Java代码示例,文章和教程,可以帮助你学习Java编程语言. 网站名称:就是爱Java 网站地址:http://java.openyu.org