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 是否存在时失败。在物理设备上工作得很好。
我正在尝试从某个位置获取地址。我在 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 是否存在时失败。在物理设备上工作得很好。