4

我正在尝试从 Google 地点选择器中获取城市名称。有什么方法可以使用地点选择器 API 获取城市名称。我知道我们不能简单地通过放置place.getCity();下面的代码从 API 中获取它。

protected void onActivityResult(int requestCode, int resultCode, Intent data) {

        if(requestCode == REQUEST_PLACE_PICKER){

            if(resultCode==RESULT_OK){

                Place place = PlacePicker.getPlace(data,this);

                final CharSequence name = place.getName();
                final CharSequence address = place.getAddress();
                final CharSequence phone = place.getPhoneNumber();
                final String placeId = place.getId();
                final LatLng latLng = place.getLatLng();

                if(place.getLocale() != null) {
                    String aname = place.getLocale().toString();
                    areaname.setText(aname);
                }

                location.setText(address);
                gname.setText(name);
                latlon.setText(String.valueOf(latLng));

            }
        }
    }

我不希望城市中有任何空值。我读到Geocoder的大部分都是空值。

4

1 回答 1

7

尝试使用地理编码器

final Place place = PlacePicker.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();
}

您也可以尝试调用 webservice 并解析 json 结果以获取城市。只需在下面的 url 中传递您从 placepicker 获得的 lat/lng。结果中的administrator_area_level_2 代表城市

http://maps.googleapis.com/maps/api/geocode/json?latlng=23,72&sensor=true

于 2017-07-10T05:25:36.713 回答