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


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)?

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

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

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

最新更新