我试图从某个位置获取地址。我是在Fragement里面的asynctask中这样做的。所有其他代码都可以正常工作(检查API并根据它设置一些UI内容),但是这部分进行地理编码只是赢了。我在StackOverflow上的其他地方跟踪了一个例子(无法记住确切的主题)。
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失败并继续执行程序的其余部分。
答案 0 :(得分:0)
问题出在Android Emulator上。即使您通过命令行设置坐标,仿真器也不会执行GeoCoding代码,因此如果GeoCoder存在则无法检查。在物理设备上工作得很好。