2013-08-31 1 views
0

Мне нужна помощь. Я застрял в получении имени города, используя Geocoder api. Все, что я сделал не так.Android Geocoder не возвращается Город

Одна вещь, которая работает, если я использовал это в onLocationChanged (Location loc).

Однако для этого требуется обновить координату, перемещаясь. Я хочу использовать координаты только из сети.

Любая помощь очень ценится.

public void DisCityName(Location loc){ 
    /*----------to get City-Name from coordinates ------------- */ 
    String cityName=null;     
    Geocoder gcd = new Geocoder(getBaseContext(), Locale.getDefault());     
    List<Address> addresses; 
    try { 
    addresses = gcd.getFromLocation(loc.getLatitude(), loc.getLongitude(), 1); 
    if (addresses.size() > 0) 
    System.out.println(addresses.get(0).getLocality()); 
    cityName=addresses.get(0).getLocality(); 
    } catch (IOException e) {     
    e.printStackTrace(); 
    } 

    Toast.makeText(getBaseContext(), 
     "\n\nMy Currrent City is: "+cityName 
     +"\nLatitude: "+loc.getLatitude() 
     +"\nLongitude: "+loc.getLongitude(), 
     Toast.LENGTH_SHORT).show();} 
+0

r Получение каких-либо исключений? –

ответ

3

Попробуйте это, он даст вам адрес с местонахождения.

public class AndroidFromLocation extends Activity { 

double LATITUDE = 37.42233; 
double LONGITUDE = -122.083; 

/** Called when the activity is first created. */ 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 
    TextView myLatitude = (TextView)findViewById(R.id.mylatitude); 
    TextView myLongitude = (TextView)findViewById(R.id.mylongitude); 
    TextView myAddress = (TextView)findViewById(R.id.myaddress); 

    myLatitude.setText("Latitude: " + String.valueOf(LATITUDE)); 
    myLongitude.setText("Longitude: " + String.valueOf(LONGITUDE)); 

    Geocoder geocoder = new Geocoder(this, Locale.ENGLISH); 

    try { 
    List<Address> addresses = geocoder.getFromLocation(LATITUDE, LONGITUDE, 1); 

    if(addresses != null) { 
    Address returnedAddress = addresses.get(0); 
    StringBuilder strReturnedAddress = new StringBuilder("Address:\n"); 
    for(int i=0; i<returnedAddress.getMaxAddressLineIndex(); i++) { 
    strReturnedAddress.append(returnedAddress.getAddressLine(i)).append("\n"); 
    } 
myAddress.setText(strReturnedAddress.toString()); 
} 
else{ 
myAddress.setText("No Address returned!"); 
} 
} catch (IOException e) { 
// TODO Auto-generated catch block 
    e.printStackTrace(); 
myAddress.setText("Canont get Address!"); 
} 

} 
} 
+0

Я заметил, что Geocoder Geocoder = новый Geocoder (этот, Locale.ENGLISH) быстрее Geocoder geocoder = новый Geocoder (это, Locale.getDefault) и не заставляет закрыть мое приложение? Или я просто воображаю. Он работает сейчас. Благодарю. –