Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/208.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 谷歌地图的地理编码器为什么会返回日语字符?_Android_Google Maps - Fatal编程技术网

Android 谷歌地图的地理编码器为什么会返回日语字符?

Android 谷歌地图的地理编码器为什么会返回日语字符?,android,google-maps,Android,Google Maps,我有一个身体的方法,像这样: Address address = new Geocoder(context).getFromLocation(latitude, longitude, 5).get(0); return address.getThoroughfare() + ", " + address.getSubThoroughfare() + ", " + address.getSubLocality(); 打印结果时,address.getSubLocality()的值显示一个日语字符

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

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);
        }
    }
}
类的构造函数将对象作为参数。有了它,您可以用任何支持的语言输出。如果您没有像在代码段中那样设置显式的本地语言,则默认情况下将使用Locale.getDefault()

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

它以这种方式返回,因为它是这样标记的。您看到的日文字符(
アウファヴィーレ)是该地区一家开发公司的代表


我不知道为什么有人用日语给它贴标签。不过,你对此无能为力。附近的其他位置没有这样标记。

即使我将位置设置为英语,谷歌也会以日语字符返回结果。我已经用完整的代码更新了我的问题。你看过地址了吗,可能是地址本身有奇怪的字符。可能会尝试其他位置。我已经尝试过了,其他位置都是正确的。我认为有一种方法可以强迫地址用非日语字符显示。是的。这是真的。我已经通过这种方式查看了地址。奇怪的是,谷歌地图在同一条街上为其他人的住宅号码返回非日语字符。就像我说的,我不知道为什么有人用日语给巴西邻居贴上标签。除非是(非常)模糊地提到有人偷偷溜进去,但即使是这样也有点牵强。是的。我会选择你的答案,因为我的问题是“为什么”,你对此给出了一个很好的答案,但我对无法解决这个问题感到失望无论如何,谢谢你!我认为解决这个问题的唯一办法是联系谷歌,问他们为什么贴上这样的标签。如果没有正当理由,他们可能会改变它。您可以扫描代码中的日文字符并将其剥离,但考虑到这可能是最尖锐的边缘情况,这可能是太多的工作了。我将尝试与他们联系