4
List<Address> addresses = new Geocoder(a).getFromLocation(latitude,longitude, 1);
Address adr = addresses.get(0)

//receive different paramters of an address
postalCode = a.getPostalCode();
city = a.getLocality();
county = a.getAdminArea();
country = a.getCountryName();
street = a.getThoroughfare();

但是我如何收到门牌号码?

注意!a.getAddressLine(0) 在单个字符串中返回带有数字的街道名称(例如:MyAddress 101b)。有没有办法只接收门牌号(例如:101b)?

4

3 回答 3

3

很多时候地址是近似的并且不包含门牌号码。特别是如果位置不在北美或西欧。我之前的研究表明,门牌号没有专门的字段。您必须使用例如正则表达式检查地址字符串,以确定它是否包含门牌号码。

于 2012-06-25T13:44:32.347 回答
1

在我的情况下a.getSubThoroughfare()返回门牌号(或者null如果它是没有号码的地址)。也许这取决于语言环境,因此请检查它是否适合您。

于 2016-06-03T07:50:41.397 回答
-2
Geocoder geocoder = new Geocoder(context, Locale.getDefault());
String result = null;
try {
    List<Address> addressList = geocoder.getFromLocation(
    latitude, longitude, 1);
    if (addressList != null && addressList.size() > 0) 
    {
        Address address = addressList.get(0);
        StringBuilder sb = new StringBuilder();
        // House no and street name
        sb.append(address.getAddressLine(0)).append(""); 
    }
}
于 2016-05-09T11:37:28.547 回答