【问题标题】:How to get city and state name in Autocomplete Places _ Places API如何在 Autocomplete Places _ Places API 中获取城市和州名
【发布时间】:2019-05-27 07:04:35
【问题描述】:

我正在使用 Places Autocomplete 从用户中选择城市,它工作正常, 但现在我想要城市和州名.. 我的代码..

正在初始化

  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 吗?
  • 我正在使用新的 PLACES API,给出的链接使用已弃用的旧 google places API
  • 更新列表 fields = Arrays.asList(Place.Field.ID, Place.Field.NAME,Place.Field.LAT_LNG);获取LatLong,否则为null。

标签: android google-places-api google-places googleplacesautocomplete


【解决方案1】:

这样使用:-

和 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 异常
  • 用 Try catch 更新了这个问题
  • 更新列表 fields = Arrays.asList(Place.Field.ID, Place.Field.NAME,Place.Field.LAT_LNG);获取LatLong,否则为null。
【解决方案2】:

试试这样的:

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

【讨论】:

    【解决方案3】:

    我认为这些对你有用;

    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();
    

    【讨论】:

      猜你喜欢
      • 2019-01-27
      • 2016-08-15
      • 2021-01-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-02-12
      • 1970-01-01
      相关资源
      最近更新 更多