我正在实施一个简单的地理编码示例,用户输入地址并获取其经度和纬度。
addr = Area_edtxt.getText().toString();
try {
list_addr = gc.getFromLocationName(addr, 1);
} catch (IOException e) {
// TODO Auto-generated catch block
Log.d("Location lookup failed", e.getMessage());
}
if (list_addr != null && list_addr.size() > 0 ){
latitude = list_addr.get(0).getLatitude();
longitude = list_addr.get(0).getLongitude();
latitude_edtxt.setText(latitude.toString());
longitude_edtxt.setText(longitude.toString());
}else {
latitude_edtxt.setText("Address not found");
}
但显示错误:无法打开堆栈跟踪文件'/data/anr/traces.txt':权限被拒绝。
答案 0 :(得分:1)
要快速尝试,您可以使用AsyncTask http://developer.android.com/reference/android/os/AsyncTask.html
private class GeocodeTask extends AsyncTask<String, Integer, List> {
protected Long doInBackground(String... address) {
try {
return gc.getFromLocationName(address[0], 1)
} catch (IOException e) {
// TODO Auto-generated catch block
Log.d("Location lookup failed", e.getMessage());
}
}
protected void onPostExecute(List result) {
if (list_addr != null && list_addr.size() > 0 ){
latitude = list_addr.get(0).getLatitude();
longitude = list_addr.get(0).getLongitude();
latitude_edtxt.setText(latitude.toString());
longitude_edtxt.setText(longitude.toString());
}else {
latitude_edtxt.setText("Address not found");
}
}
}
new GeocodeTask().execute(addr);