我试图找出用户使用其位置的城市。使用 LocationManager 和 Geocoder 我从经度和纬度中获得了一些不错的数据,但我什么也得不到。subAdminArea 又名城市。它总是为我返回null,即使收到了包括邮政编码在内的所有其他内容。有什么我想念的吗?
基本上这是我用来获取数据的一种方法。
public String getLocation(Locale locale, Context context, boolean city, boolean postal, boolean state_prov) throws IOException{
LocationManager locMan = (LocationManager)this.getSystemService(Context.LOCATION_SERVICE);
LocationListener locList = new MyLocList();
Geocoder gC = new Geocoder(context,locale);
Location gpsLocation = locMan.getLastKnownLocation(locMan.GPS_PROVIDER);
locMan.requestLocationUpdates(locMan.NETWORK_PROVIDER, 500, 200, locList);
Location networkLocation = locMan.getLastKnownLocation(locMan.NETWORK_PROVIDER);
if (city)
return (gC.getFromLocation(networkLocation.getLatitude(), networkLocation.getLongitude(), 1).get(0).getSubAdminArea());
else if (postal)
return (gC.getFromLocation(networkLocation.getLatitude(), networkLocation.getLongitude(), 1).get(0).getPostalCode());
else if (state_prov)
return (gC.getFromLocation(networkLocation.getLatitude(), networkLocation.getLongitude(), 1).get(0).getAdminArea());
else
return "";
}
并且通过以下方式调用此方法:
String city = getLocation(Locale.getDefault(),getBaseContext(),true,false,false);
我通过一些研究发现的唯一其他选择是将请求发送到
http://maps.googleapis.com/maps/api/geocode/json?address=POSTALCODE&sensor=true
它根据邮政编码为我提供了该位置的 JSON,然后我可以对其进行解析,但要找到这座城市似乎需要做很多工作。
有什么我想念的吗?还是我做错了什么?我是安卓定位服务的新手。