Android 反向地理编码

Android Reverse Geocoding

我正在尝试从某个位置获取地址。我在 Fragement 中的异步任务中这样做。所有其他代码都可以正常工作(检查 API 并根据它设置一些 UI 内容)但是执行地理编码的这一部分不会。我遵循了 Whosebug 上其他地方的一个示例(不记得确切的主题)。

 TextView locTxt = (TextView) findViewById(R.id.locationText);
                Geocoder geocoder;
                List<Address> addresses;

                Double x = 55.971627;
                Double y = -3.602585;


                try
                {
                    geocoder = new Geocoder(getActivity(), Locale.ENGLISH);
                    addresses = geocoder.getFromLocation(x, y, 1);
                    StringBuilder str = new StringBuilder();
                    if (geocoder.isPresent())
                    {
                        Toast.makeText(getApplicationContext(),
                                "geocoder present", Toast.LENGTH_SHORT).show();
                        Address returnAddress = addresses.get(0);

                        String localityString = returnAddress.getLocality();
                        String city = returnAddress.getCountryName();
                        String region_code = returnAddress.getCountryCode();
                        String zipcode = returnAddress.getPostalCode();

                        str.append(localityString + "");
                        str.append(city + "" + region_code + "");
                        str.append(zipcode + "");

                        locTxt.setText(str);



                    }
                    else
                    {
                        Toast.makeText(getApplicationContext(), "geocoder not present", Toast.LENGTH_SHORT).show();
                    }
                } catch (IOException e) {}

当它到达 geocoder.isPresent() 的 if 语句时,if 语句失败并继续执行程序的其余部分。

问题出在 Android 模拟器上。即使您通过命令行设置坐标,模拟器也不会执行 GeoCoding 代码,因此在我检查 GeoCoder 是否存在时失败。在物理设备上工作得很好。