有没有方法可以在Google Place Picker for Android中获取城市名称?

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通常会返回大量空值。

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获得的经纬度即可。administrative_area_level_2表示城市。

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


导入 java.util.List; - Asesha George
对于地址 > 导入android.location.Address; - Yyy
好的,我已经更改了。但是当我尝试在文本视图中设置它时,它会给出非常奇怪的值。 - Asesha George
1
谢谢你的帮助,南希。我刚刚添加了city.setText(String.valueOf(addresses.get(0).getLocality()));。 - Asesha George
小心使用Address.getAddressLine()方法。不要假设地址行数。请使用Address.getMaxAddressLineIndex()方法进行检查。 - AndrewR
显示剩余2条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接