gpt4 book ai didi

android - 如何格式化多行显示的地址?

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:24:13 29 4
gpt4 key购买 nike

类似于this question从 2011 年开始,缺乏令人满意的答案:

我正在开发的应用程序将在全局范围内部署。应用程序本身只关心 Address 的纬度/经度,但它需要以多行格式向用户显示 Address。 Google 的地理编码器提供了一个格式化的地址,但它位于以逗号分隔的单行中。将其拆分为多行需要了解多行地址在给定国家/地区的格式。例如,在美国,通常将城市和州放在同一行,并用逗号分隔。

考虑到反向地理编码地址可能不完整,是否有内置方法(或第三方库或 Web 服务)可以从 Address 格式化多行地址?

最佳答案

查看 googlei18n/libaddressinput: Google’s postal address library, powering Android and Chromium .项目中有两个模块:android 和:common。您应该只需要 :common 来格式化多行显示的地址。

import android.location.Address;
import android.support.annotation.NonNull;
import android.text.TextUtils;
import com.google.i18n.addressinput.common.AddressData;
import com.google.i18n.addressinput.common.FormOptions;
import com.google.i18n.addressinput.common.FormatInterpreter;
...
public static String getFormattedAddress(@NonNull final Address address,
@NonNull final String regionCode) {
final FormatInterpreter formatInterpreter
= new FormatInterpreter(new FormOptions().createSnapshot());
final AddressData addressData = (new AddressData.Builder()
.setAddress(address.getThoroughfare())
.setLocality(address.getLocality())
.setAdminArea(address.getAdminArea())
.setPostalCode(address.getPostalCode())
.setCountry(regionCode) // REQUIRED
.build());
// Fetch the address lines using getEnvelopeAddress,
List<String> addressFragments = formatInterpreter.getEnvelopeAddress(addressData);
// join them, and send them to the thread.
return TextUtils.join(System.getProperty("line.separator"),
addressFragments);
}

注意:regionCode 必须是有效的 iso2 国家代码,因为这是格式解释器从中提取地址格式的地方。 (如果您好奇,请参阅 RegionDataConstants 以获取格式列表。)

Sets the 2-letter CLDR region code of the address; see AddressData#getPostalCountry(). Unlike other values passed to the builder, the region code can never be null.

示例:美国

801 CHESTNUT ST
ST. LOUIS, MO 63101

例子:日本

〒1600023
NISHISHINJUKU
3-2-11 NISHISHINJUKU SHINJUKU-KU TOKYO

关于android - 如何格式化多行显示的地址?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32914662/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com