Как получить название города и штата в автозаполнении Places _ Places API

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

Инициализация

  List<Place.Field> fields = Arrays.asList(Place.Field.ID, Place.Field.NAME);
            Intent intent = new Autocomplete.IntentBuilder(
                    AutocompleteActivityMode.OVERLAY, fields)
                    .setTypeFilter(TypeFilter.CITIES)
                    .setCountry("IN")
                    .build(this);
            startActivityForResult(intent, AUTOCOMPLETE_REQUEST_CODE);

onActivity Результат

if (requestCode == AUTOCOMPLETE_REQUEST_CODE) {
            if (resultCode == RESULT_OK) {
                //Place place = Autocomplete.getPlaceFromIntent(data);
                Place place = Autocomplete.getPlaceFromIntent(data);

                edit_profile_city_editText.setText(place.getName());

            } else if (resultCode == AutocompleteActivity.RESULT_ERROR) {
                Status status = Autocomplete.getStatusFromIntent(data);
                Log.i("Autocomplete error", status.getStatusMessage());
            } else if (resultCode == RESULT_CANCELED) {
            }
        }

При выборе города в строке поиска отображаются как город, так и штат. например:Ченнаи Тамилнад, Индия Пожалуйста, помогите, как получить имя штата также...

Вы пробовали этот stackoverflow.com/a/37737253/6549598 ?

nimi0112 27.05.2019 09:54

Я использую New PLACES API, по ссылке используется старый API Google Places, который устарел.

Navin Kumar 27.05.2019 10:10

обновить List<Place.Field> fields = Arrays.asList(Place.Field.ID, Place.Field.NAME, Place.Field.LAT_LNG); чтобы получить LatLong, иначе он будет нулевым.

Navin Kumar 27.05.2019 12:40
3
3
3 643
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Попробуйте что-то вроде этого:

 Geocoder geocoder = new Geocoder(getContext(), Locale.getDefault());
 List<Address> addresses = new ArrayList<>();
 addresses = geocoder.getFromLocation(lat, lng, 1);
 String country = addresses.get(0).getCountryName();

Я думаю, что это сработает для вас;

Geocoder geocoder = new Geocoder(this, Locale.getDefault());
List<Address> addresses = geocoder.getFromLocation(MyLat, MyLong, 1);
String cityName = addresses.get(0).getAddressLine(0);
String stateName = addresses.get(0).getAddressLine(1);
String countryName = addresses.get(0).getAddressLine(2);

или

String address = addresses.get(0).getSubLocality();
String cityName = addresses.get(0).getLocality();
String stateName = addresses.get(0).getAdminArea();
Ответ принят как подходящий

Используйте так: -

и onActivityResult

 if (requestCode == AUTOCOMPLETE_REQUEST_CODE) {
        if (resultCode == RESULT_OK) {
            Place place = Autocomplete.getPlaceFromIntent(data);
            LatLng latLng = place.getLatLng();
            double MyLat = latLng.latitude;
            double MyLong = latLng.longitude;
            Geocoder geocoder = new Geocoder(EditProfileActivity.this, Locale.getDefault());
            try {
                List<Address> addresses = geocoder.getFromLocation(MyLat, MyLong, 1);
                String stateName = addresses.get(0).getAdminArea();
                String cityName = addresses.get(0).getLocality();
                edit_profile_city_editText.setText(place.getName() + "," + stateName);
            } catch (IOException e) {
                e.printStackTrace();

            }

Надеюсь, это поможет вам. Спасибо ..

я получаю ошибку в этой строке «geocoder.getFromLocation (MyLat, MyLong, 1);» ошибка: исключение java.io

Navin Kumar 27.05.2019 11:59

Обновил эту проблему, попробовав поймать

Navin Kumar 27.05.2019 12:22

обновить List<Place.Field> fields = Arrays.asList(Place.Field.ID, Place.Field.NAME, Place.Field.LAT_LNG); чтобы получить LatLong, иначе он будет нулевым.

Navin Kumar 27.05.2019 12:22

работал отлично. Просто измените place.getName() на cityName при установке текста для editProfile.

dennisrufigill 16.03.2022 07:24

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