Как я могу получить название города и штата из PlaceAutocomplete api?

Я написал код, чтобы получить название города. Но теперь в соответствии с новым требованием мне также нужно имя состояния из api com.google.android.gms.location.places.ui.PlaceAutocomplete. Вы можете сослаться на фрагмент кода, который я сделал для получения города.

AutocompleteFilter autocompleteFilter = new AutocompleteFilter.Builder()
                    .setCountry("IN")
                    .setTypeFilter(AutocompleteFilter.TYPE_FILTER_REGIONS)
                    .build();

            Intent intent = new PlaceAutocomplete.IntentBuilder(PlaceAutocomplete.MODE_FULLSCREEN)//MODE_OVERLAY
                    .setFilter(autocompleteFilter)
                    .build(this);
            startActivityForResult(intent, PLACE_AUTOCOMPLETE_REQUEST_CODE);


 @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        if (requestCode == PLACE_AUTOCOMPLETE_REQUEST_CODE) {
            Utils.dismissProgressBar();
            if (resultCode == RESULT_OK) {
                Place place = PlaceAutocomplete.getPlace(this, data);
                AppLog.log(TAG, "Place: " + place.getName());
                AppLog.log(TAG, "getAddress: " + place.getAddress());
                mCityName.setText(place.getName());
            } else if (resultCode == PlaceAutocomplete.RESULT_ERROR) {
                Status status = PlaceAutocomplete.getStatus(this, data);
                AppLog.log(TAG, status.getStatusMessage());
                Toast.makeText(status.getStatusMessage(), true);
            } else if (resultCode == RESULT_CANCELED) {
                //Toast.makeText("Unable to find place", true);
            }
        }
    }
2
0
1 842
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Используя Geocoder, мы можем получить название города. Попробуй это.

final Place place = PlaceAutocomplete.getPlace(this,data);
Geocoder geocoder = new Geocoder(this);
try
{
    List<Address> addresses = geocoder.getFromLocation(place.getLatLng().latitude,place.getLatLng().longitude, 1);
    String address = addresses.get(0).getAddressLine(0);
    String city = addresses.get(0).getAddressLine(1);
    //String country = addresses.get(0).getAddressLine(2);  

} catch (IOException e){
    e.printStackTrace();
}

Спасибо за ответ. Но я не получаю состояние как одну строку. также я получаю нулевой город

Honeywell 04.04.2018 11:22
Ответ принят как подходящий

У меня это работает так:

final Place place = PlaceAutocomplete.getPlace(this,data);
Geocoder geocoder = new Geocoder(this);
try
{
    List<Address> addresses = geocoder.getFromLocation(place.getLatLng().latitude,place.getLatLng().longitude, 1);
    String city = addresses.get(0).getSubAdminArea();
    String country = addresses.get(0).getAdminArea();  

} catch (IOException e){
    e.printStackTrace();
}

Это ненадежно. Геокодер будет генерировать исключение во многих случаях, когда вашим пользователям потребуется перезагрузить свое устройство, чтобы это работало должным образом. Мы использовали это в нашем продукте, и позже пришлось удалить его. Обратитесь к этому вопросу: code.google.com/p/android/issues/detail?id=38009

Prasad Pawar 16.10.2018 07:56

Другие вопросы по теме