обратное геокодирование не работает - PullRequest
1 голос
/ 19 февраля 2012

я написал следующий код, чтобы получить текущее местоположение.хотя я тестирую его в эмуляторе с разной широтой и долготой.Но он не может конвертировать широту и долготу в реальном местоположении.

          public class LocationFindingActivity extends Activity {
/** Called when the activity is first created. */

EditText et;
LocationManager  locationManager;
String provider;
LocationListener locationListener;
Location currentLocation;
String addressString="";
String longlattString="";
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    et=(EditText)findViewById(R.id.locationTXT);

    locationManager =(LocationManager) getSystemService(Context.LOCATION_SERVICE);

    Criteria criteria = new Criteria();
    criteria.setAccuracy(Criteria.ACCURACY_FINE);
    criteria.setAltitudeRequired(false);
    criteria.setBearingRequired(false);
    criteria.setCostAllowed(true);
    criteria.setPowerRequirement(Criteria.POWER_LOW);
    provider = locationManager.getBestProvider(criteria, true);
    currentLocation=locationManager.getLastKnownLocation(provider);


    et.setText(addressString);
    locationListener =new LocationListener() {

        @Override
        public void onStatusChanged(String arg0, int arg1, Bundle arg2) {
            // TODO Auto-generated method stub

        }

        @Override
        public void onProviderEnabled(String arg0) {
            // TODO Auto-generated method stub

        }

        @Override
        public void onProviderDisabled(String arg0) {
            // TODO Auto-generated method stub

        }

        @Override
        public void onLocationChanged(Location arg0) {
            // TODO Auto-generated method stub
            updateWithNewLocation(currentLocation);

        }
    };
    updateWithNewLocation(currentLocation);
     locationManager.requestLocationUpdates(provider, 2000, 10,locationListener)

}



private void updateWithNewLocation(Location location) {




    if (location != null) 
    {
      double lat = location.getLatitude();
      double lng = location.getLongitude();
      longlattstring="Lattitude :"+lat+"Longitude :"+lng;


     Geocoder gc = new Geocoder(this, Locale.getDefault());

     try 
     {
            List<Address> addresses = gc.getFromLocation(lat, lng, 1);
            StringBuilder sb = new StringBuilder();
            //Toast.makeText(this, "Problem1", 2000).show();
            if (addresses.size() > 0)
            {
                    Address address = addresses.get(0);
                    for (int i = 0; i < address.getMaxAddressLineIndex(); i++)
                        sb.append(address.getAddressLine(i)).append("\n");
                    sb.append(address.getLocality()).append("\n");
                    Toast.makeText(this, "Problem2", 2000).show();
                    sb.append(address.getPostalCode()).append("\n");
                    sb.append(address.getCountryName());
            }
            addressString = sb.toString();
     } 
     catch (IOException e) 
     {
         Toast.makeText(this, "Problem Catch", 2000).show();
     }
}


    else 
    {
        addressString = "No location found";    
    }

    et.setText(addressString);


}

}

У меня проблема в этой строке

Список адресов = gc.getFromLocation (latlng, 1);

оператор ничего не возвращает.

1 Ответ

0 голосов
/ 19 февраля 2012

Это известная ошибка, которую они никогда не исправляли, см. служба недоступна . Я думаю, вы обнаружите, что она работает в эмуляторе API уровня 7.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...