Android 为地址反解析提供了标准的api 方案,但该方案并不是android sdk的一部分。手机用户要想
正常使用该功能,手机上必须安装 google map。但国内没有厂家默认内置google map, 手机用户也不可能
自动安装。反解析的方案国内应该可以通过baidu地图api接口,国外的话,还是的通过google.
主要研究下国外地理信息反解方式
1.获取经纬度provider 方式
gps 方式: LocationManager.GPS_PROVIDER
net 方式: LocationManager.GPS_NET
2种方式优缺点如下:
GPS_PROVIDER 通过卫星与手机定位经纬度,最小精度可以达到10m左右,但能耗比较大,在手机上不利于
长期开启。
GPS_NET 该经纬度误差较大,基本在1公里内(2g,3g),如果使用wi-fi误差会远远超过1公里。原因是该方式获取
的并不是手机本身的地理位置经纬度,而是服务站,或者isp提供商的经纬度信息。如果你用wi-fi方式,并使用国外
代理服务器上网,这个偏差可能跨越半个地球。
2. google 反解的标准方式
引用包名: android.location.Geocoder;
因不是标准api组成,需要通过Geocoder.isPresent先判别能不能使用,然后执行反解析,代码如下:
private
void
getAddressFromLocation(
double
latitude,
double
longitude) {
try
{
if
(!Geocoder.isPresent())
{
//api level 9
return
;
}
Utils. printLog(
"GeophyInfoTracker"
,
"getAddressFromLocation"
);
Geocoder geocoder =
new
Geocoder(
s_CurUIContext
,Locale.
ENGLISH
);
List<Address> addresses = geocoder.getFromLocation(latitude, longitude, 1);
if
(addresses !=
null
&& addresses.size() > 0) {
Address address = addresses.get(0);