在安卓中获取谷歌地图的地名

6

我有一个需求,每当我拖动/浏览谷歌地图并在上面放置标记时,它应该在AutocompleteTextview中显示该地点的名称(标记所在位置)。我已经查看了Places API和Geocoder类,但是我很难理解。我需要像life360应用程序中的“地点”选项卡一样完成任务。我该如何实现它?

2个回答

9

尝试这个,它可能会对你有所帮助...

当您标记一个位置时,请尝试使用标记器捕获纬度和经度,并使用此代码获取位置名称。

public String getAddress(Context context, double lat, double lng) {
    Geocoder geocoder = new Geocoder(context, Locale.getDefault());
    try {
        List<Address> addresses = geocoder.getFromLocation(lat, lng, 1);
        Address obj = addresses.get(0);

        String add = obj.getAddressLine(0);
        add = add + "\n" + obj.getCountryName();
        add = add + "\n" + obj.getCountryCode();
        add = add + "\n" + obj.getAdminArea();
        add = add + "\n" + obj.getPostalCode();
        add = add + "\n" + obj.getSubAdminArea();
        add = add + "\n" + obj.getLocality();
        add = add + "\n" + obj.getSubThoroughfare();

        return add;
    } catch (IOException e) {
        e.printStackTrace();
        Toast.makeText(this, e.getMessage(), Toast.LENGTH_SHORT).show();
        return null;
    }
}

知道了。但是是否有一种方法可以在 AutocompleteTextview 中捕获地名,该文本框已经用于预测地名,即区域名称? - void Adi
1
在一些设备上,GeoCoder不存在...必须检查它是否已启用。 - issamux

1
请尝试这个,希望它能正常工作。原文中保留了HTML标签。
 public void getLocation(double lat, double lng) {
    Geocoder geocoder = new Geocoder(MapsActivity.this, Locale.getDefault());       

    try {
        List<Address> addresses = geocoder.getFromLocation(lat, lng, 1);
        Address obj = addresses.get(0);
        String add = obj.getAddressLine(0);           

        Log.e("IGA", "Address" + add);


    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
        Toast.makeText(this, e.getMessage(), Toast.LENGTH_SHORT).show();
    }

}

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