我正在尝试使用以下代码获取地点的纬度和经度:
public LatLng findAddress(String place) {
try {
HttpURLConnection conn = null;
StringBuilder jsonResults = new StringBuilder();
String googleMapUrl = "http://maps.googleapis.com/maps/api/geocode/json?address="
+ place + "&sensor=false";
URL url = new URL(googleMapUrl);
conn = (HttpURLConnection) url.openConnection();
InputStreamReader in = new InputStreamReader(conn.getInputStream());
int read;
char[] buff = new char[1024];
while ((read = in.read(buff)) != -1) {
jsonResults.append(buff, 0, read);
}
String a = "";
StringBuilder sb = jsonResults;
JSONObject jsonObj = new JSONObject(sb.toString());
JSONArray resultJsonArray = jsonObj.getJSONArray("results");
JSONObject before_geometry_jsonObj = resultJsonArray
.getJSONObject(0);
JSONObject geometry_jsonObj = before_geometry_jsonObj
.getJSONObject("geometry");
JSONObject location_jsonObj = geometry_jsonObj
.getJSONObject("location");
String lat_helper = location_jsonObj.getString("lat");
double lat = Double.valueOf(lat_helper);
String lng_helper = location_jsonObj.getString("lng");
double lng = Double.valueOf(lng_helper);
return new LatLng(lat, lng);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
return new LatLng(0,0);
}
}
但是当我运行它时,它会进入捕获部分(在
之后) conn = (HttpURLConnection) url.openConnection();
InputStreamReader in = new InputStreamReader(conn.getInputStream());
一部分)。 即使经过一段时间修改代码,我似乎也没有找到这种现象背后的原因。 (我不使用GeoCoder服务的原因是因为它不稳定,需要重新启动我测试过的每台设备)
答案 0 :(得分:1)
同时我解决了它。 我得到了android.os.NetworkOnMainThreadException,我不应该在主线程上运行网络调用。谢谢大家的帮助。