为什么Google地图的Geocoder会返回日文字符?

时间:2013-09-27 20:57:14

标签: android google-maps

我有一个像这样的身体方法:

Address address = new Geocoder(context).getFromLocation(latitude, longitude, 5).get(0);
return address.getThoroughfare() + ", " + address.getSubThoroughfare() + ", " + address.getSubLocality();

当我打印结果时,address.getSubLocality()的值显示日语字符串。

为什么会这样开心?

我该如何解决这个问题?

谢谢!

修改

我的完整示例项目:

public class MainActivity extends Activity implements View.OnClickListener {

    EditText ed1, ed2;
    TextView tv1;
    Button bt1;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        ed1 = (EditText) findViewById(R.id.ed1);
        ed2 = (EditText) findViewById(R.id.ed2);
        tv1 = (TextView) findViewById(R.id.tv1);
        bt1 = (Button) findViewById(R.id.bt1);

        ed1.setText("-23.50282");
        ed2.setText("-46.84905");

        bt1.setOnClickListener(this);
    }

    public static String getAddressFromLocation(Context context, Double latitude, Double longitude) throws IOException {
        Address address = new Geocoder(context, Locale.ENGLISH).getFromLocation(latitude, longitude, 5).get(0);
        return address.getThoroughfare() + ", " + address.getSubThoroughfare() + ", " + address.getSubLocality() + " - " + address.getAdminArea();
    }

    @Override
    public void onClick(View v) {
        String address = "Street";
        if (v.getId() == R.id.bt1) {
            try {
                address = getAddressFromLocation(this, Double.parseDouble(ed1.getText().toString()), Double.parseDouble(ed2.getText().toString()));
            } catch (IOException e) {
                e.printStackTrace();
            }
            tv1.setText(address);
        }
    }
}

2 个答案:

答案 0 :(得分:2)

它返回那种方式,因为它是Google Maps中标记的方式。您看到的日文字符(アウファヴィーレ)是该区域开发公司Alphaville的代表。

为什么有人用日语标注,我不知道。但是,你无能为力。附近的其他地方没有这样标记。

答案 1 :(得分:0)

Geocoder类的构造函数将Locale Object作为参数。有了这个,您可以使用任何支持的语言输出。如果您没有像在代码段中那样设置显式本地,则默认情况下将使用Locale.getDefault()。

Address address = new Geocoder(context, Locale.ENGLISH)
        .getFromLocation(latitude, longitude, 5).get(0);