在安卓中使用地理编码器获取地址

4

我试图通过提供静态地理坐标来获取特定位置的地址,但无法获取地址。请问有人可以帮忙吗?我只需要检查这个函数是否适用于我。

以下是我的代码片段:

Geocoder geocoder = new Geocoder(AddressSimulator.this, Locale.getDefault());
        List<Address> addresses = geocoder.getFromLocation(1.352566007, 103.78921587, 1);
        System.out.println("Addresses size"+addresses.size());

地址大小为零。我尝试了几个其他地理坐标,但地址大小始终返回为0。专家们,请帮助我解决这个问题。

期待您宝贵的帮助和建议,

此致, Rony


只是稍微不同的问题,你是否收到了像“服务不可用”这样的异常? - Aman Alam
Rony,你使用的经纬度在法国的某个荒野地带。请改用西雅图或其他地点再试一次。 - Reno
3个回答

3

尝试使用Google或RPC geocoder中的一个。对于Google地图,您需要从Google获取密钥。

对于geocoder,他们仅在15秒内响应来自相同IP的一次请求。

string geocoderUri = String.Format("http://maps.google.com/maps/geo?q={0},{1},{2}&output=csv"
                + "&key= < Your Key > ", street, city, state);

或者
string geocoderUri = string.Format("http://rpc.geocoder.us/service/rest?address={0},{1},{2}", street, city, state);

嗨,Franklins,谢谢你的回复...但是当我只有纬度和经度时,如何获取街道、城市和州? - user264953
这可能会有所帮助:https://developers.google.com/maps/documentation/geocoding/#ReverseGeocoding。通常你想要做的是反向地理编码,因此你可以寻找相关帮助。 - user1545072
这里的street,city和state是什么?我将它们保留为字符串,但它们无法被接受。 - sarabu
字符串 geocoderUri = string.Format("http://rpc.geocoder.us/service/rest?address={0},{1},{2}", "1 Main St", "Queens", "NY"); - franklins

2

试试这个。它将为您提供街道、区域和国家名称。 此外,请参阅此文档;在这里,您可以找到更多方法。

http://developer.android.com/reference/android/location/Address.html

try {

            Geocoder geo = new Geocoder(this.getApplicationContext(), Locale.getDefault());
            List<Address> addresses = geo.getFromLocation(latitude, longitude, 1);
            if (addresses.isEmpty()) {
                addres.setText("Waiting for Location");
            }
            else {
                if (addresses.size() > 0) {
                    addres.setText(addresses.get(0).getFeatureName() + ", " + addresses.get(0).getLocality() +", " + addresses.get(0).getAdminArea() + ", " + addresses.get(0).getCountryName());
                    //Toast.makeText(getApplicationContext(), "Address:- " + addresses.get(0).getFeatureName() + addresses.get(0).getAdminArea() + addresses.get(0).getLocality(), Toast.LENGTH_LONG).show();
                }
            }
        }
        catch (Exception e) {
            e.printStackTrace(); // getFromLocation() may sometimes fail
        }

希望这能有所帮助...


他正在使用静态坐标,而不是等待位置更新。我知道他的问题,因为我也遇到了同样的问题。根本无法获取任何地址。没有人承诺每组坐标都会返回一个地址,我猜这可能是我的问题,也可能是他的问题。 - user1545072

1

请确保在AndroidManifest.xml文件中设置了INTERNET安全权限。您需要INTERNET权限来进行查找。我知道您正在进行静态的经纬度查找,但如果您想从GPS获取经纬度,则还需要添加ACCESS_FINE_LOCATION权限以启用GPS。


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