如何从android.location.Address对象接收门牌号码?

时间:2012-06-21 14:46:28

标签: java android google-maps

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();

但我如何收到门牌号码?

NB! a.getAddressLine(0)返回带有数字的街道名称(例如:MyAddress 101b)。有没有办法只收到门牌号码(例如:101b)?

3 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分:1)

在我的情况下,Label lbl = new Label(); lbl.Text = "%"; td.Controls.Add(lbl); 会返回门牌号码(如果没有号码,则为a.getSubThoroughfare())。也许这取决于区域设置,因此请检查它是否适合您。

答案 2 :(得分:-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(""); 
    }
}