我正在制作一个应用程序,我必须在其中显示当前位置的名称。我正在获取纬度和经度,但无法获取该位置的名称。
我试图这样做的代码是:
context = getApplicationContext();
Location location;
LocationManager lm = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
double lon, lat;
try
{
location = lm.getLastKnownLocation(LocationManager.GPS_PROVIDER);
lon = location.getLongitude();
lat = location.getLatitude();
Toast.makeText(context, "Lat: "+lat+"\nLon: "+lon, Toast.LENGTH_LONG).show();
List<Address> mAddresses = null;
Geocoder gcd = new Geocoder(getApplicationContext(), Locale.getDefault());
try
{
mAddresses = gcd.getFromLocation(location.getLatitude(),
location.getLongitude(), 1);
}
catch (IOException e)
{
e.printStackTrace();
}
@SuppressWarnings("unchecked")
String cityName = (mAddresses != null) ? ((List<Address>) mAddresses).get(0)
.getLocality() : TimeZone.getDefault().getID();
@SuppressWarnings("unchecked")
String countryName = (mAddresses != null) ? ((List<Address>) mAddresses).get(0)
.getCountryName() : Locale.getDefault().getDisplayCountry()
.toString();
try
{
lm.clearTestProviderLocation(LocationManager.GPS_PROVIDER);
}
catch(Exception e)
{}
Toast.makeText(context, "Using GPS Provider", Toast.LENGTH_SHORT).show(); }
catch(Exception exp1){
try
{
location = lm.getLastKnownLocation(LocationManager.NETWORK_PROVIDER);
lon= location.getLongitude();
lat = location.getLatitude();
Toast.makeText(context, "Lat: "+lat+"\nLon: "+lon, Toast.LENGTH_LONG).show();
List<Address> mAddresses = null;
Geocoder gcd = new Geocoder(getApplicationContext(), Locale.getDefault());
try
{
mAddresses = gcd.getFromLocation(location.getLatitude(), location.getLongitude(), 1);
}
catch (IOException e)
{
e.printStackTrace();
}
@SuppressWarnings("unchecked")
String cityName = (mAddresses != null) ? ((List<Address>) mAddresses).get(0).getLocality() : TimeZone.getDefault().getID();
@SuppressWarnings("unchecked")
String countryName = (mAddresses != null) ? ((List<Address>) mAddresses).get(0).getCountryName() : Locale.getDefault().getDisplayCountry().toString();
try
{
lm.clearTestProviderLocation(LocationManager.NETWORK_PROVIDER);
}
catch(Exception e)
{}
Toast.makeText(context, "Using Network Provider", Toast.LENGTH_SHORT).show();
}