Android基础(43) java
Android地图开发实际应用中,常常会经过地图定位判断手机用户是哪一个城市的,而后根据城市的不一样调取不一样的数据,或者是地图定位以后,会在手机界面中显示用户的详细位置,如石家庄市中山北国商城。android
那么这些信息如何得到? 详细研究过Android MapView的可能用到Geocoder这个对象。详细代码以下:git
[java] view plaincopyjson
- Geocoder geocoder=new Geocoder(this, Locale.getDefault());
- try {
- List<Address> addresses=geocoder.getFromLocation(latitude, longitude, 1);
- StringBuilder stringBuilder=new StringBuilder();
- if(addresses.size()>0){
- Address address=addresses.get(0);
- for(int i=0;i<address.getMaxAddressLineIndex();i++){
- stringBuilder.append(address.getAddressLine(i)).append("\n");
- }
- stringBuilder.append(address.getLocality()).append("_");
- stringBuilder.append(address.getPostalCode()).append("_");
- stringBuilder.append(address.getCountryCode()).append("_");
- stringBuilder.append(address.getCountryName()).append("_");
- System.out.println(stringBuilder.toString());
- }
- } catch (IOException e) {
- // TODO Auto-generated catch block
- Toast.makeText(this, "报错", Toast.LENGTH_LONG).show();
- e.printStackTrace();
- }
[java] view plain copyapi
- Geocoder geocoder=new Geocoder(this, Locale.getDefault());
- try {
- List<Address> addresses=geocoder.getFromLocation(latitude, longitude, 1);
- StringBuilder stringBuilder=new StringBuilder();
- if(addresses.size()>0){
- Address address=addresses.get(0);
- for(int i=0;i<address.getMaxAddressLineIndex();i++){
- stringBuilder.append(address.getAddressLine(i)).append("\n");
- }
- stringBuilder.append(address.getLocality()).append("_");
- stringBuilder.append(address.getPostalCode()).append("_");
- stringBuilder.append(address.getCountryCode()).append("_");
- stringBuilder.append(address.getCountryName()).append("_");
- System.out.println(stringBuilder.toString());
- }
- } catch (IOException e) {
- // TODO Auto-generated catch block
- Toast.makeText(this, "报错", Toast.LENGTH_LONG).show();
- e.printStackTrace();
- }
坑爹呀,怎么执行都异常 ,真机测试还异常, 有说android 2.xx版本不能用,无论怎么样,这个很差用。app
看谷歌另外一种方法:测试
Google Geocoding API
,定会让你眼前一亮。ui
详细地址:http://code.google.com/intl/zh-CN/apis/maps/documentation/geocoding/this
根据坐标查找详细信息,也就是本篇所说的,请看 反向地址解析(地址查询)google
请求地址:http://maps.google.com/maps/api/geocode/json?latlng=40.714224,-73.961452&sensor=true
注意坐标 (纬度,经度)不要传反了
经实例测试,发现两个问题 1,读取json很慢;2,返回地址信息是英文【有时页面直接访问是中文,模拟器中是英文】
解决办法:
1,将请求地址:google.com 改成 google.cn
2,在请求地址后边再加一个参数language=zh-CN [ 不知道为何官网不给详细一点 ]