折腾,一个劲得折腾.....
真是莫名其妙啊,在之前的程序按照android的api中的Geocoder,来获取到地址的详细信息:
Geocoder geo = new Geocoder(this, Locale.getDefault());
List<Address> adList = null;
try {
// 将gps信息类转化成address信息类
adList = geo.getFromLocation(latitude,longitude, 1);
showDialog(adList.toString());
} catch (IOException e) {
e.printStackTrace();
}
运行的挺好,没把我给乐的,第二天老板给我要代码看看效果咋样,到他那里一会就和我说,小李啊,你这个不对啊,不能运行啊~
当时我就要崩溃了,之前不是运行的好好的?还是回自己的机器看看怎样~结果也是运行不了~
断点调试就是 geo.getFromLocation(latitude,longitude, 1);搞的鬼,就是出现null。但是书本上的代码也是一样的遭遇~我泪奔啊~~
网上推荐用http解析,地址如下:http://maps.google.com/maps/api/geocode/json?address=AAA&sensor=false&language=zh-cn 地址中的AAA就是你要查的地址
也可以是如下地址:http://maps.google.com/maps/api/geocode/json?latlng=AAA,BBB&sensor=false&language=zh-cn AAA,BBB为经纬度值。查询结果就出现地址信息了,但是你要知道这个结果还是一个json的格式~~看起来你也不是太好看,太多了~~~
无奈研究一天终于得到一个还算可以的结果,不过这个还是有缺陷的,毕竟和查询结果的详细程度比有些不全。但是还算好用。
我将经纬度查询地址自己写了一个类 Latlng_address
类层次图如下:
其中的处理就不在说了,自己下代码看去吧,处理的函数就是一个searchCountry(double ,double)的那个。代码样例
使用方法:
Latlng_address translation=new Latlng_address(37.1231,116.123131);
//获得经纬度上的国家名
country=translation.get_country();
//获得省名
admin=translation.get_admin();
非常简单,只要经纬度信息~~缺陷就是信息还不够全面,对于精密定位慎用。
但是希望知道为什么geo.getFromLocation(latitude,longitude, 1);不能够得到地址信息的大牛能给我一点上上一课~以解我多日之忧~