Я использую автозаполнение мест для выбора города от пользователя, он работает нормально, Но теперь я хочу название города и штата.. мой код..
Инициализация
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) {
}
}
При выборе города в строке поиска отображаются как город, так и штат. например:Ченнаи Тамилнад, Индия Пожалуйста, помогите, как получить имя штата также...
Я использую New PLACES API, по ссылке используется старый API Google Places, который устарел.
обновить List<Place.Field> fields = Arrays.asList(Place.Field.ID, Place.Field.NAME, Place.Field.LAT_LNG); чтобы получить LatLong, иначе он будет нулевым.
Попробуйте что-то вроде этого:
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
Обновил эту проблему, попробовав поймать
обновить List<Place.Field> fields = Arrays.asList(Place.Field.ID, Place.Field.NAME, Place.Field.LAT_LNG); чтобы получить LatLong, иначе он будет нулевым.
работал отлично. Просто измените place.getName() на cityName при установке текста для editProfile.
Вы пробовали этот stackoverflow.com/a/37737253/6549598 ?