为时已晚,但对别人有同样的问题
后第4天,我得到经度和纬度从城市名称
我用
http://maps.googleapis.com/maps/api/geocode/json?address=tehran&sensor=false
其中“德黑兰”是城市名
通过这个链接,你可以得到一个JSON如下
{
"results" : [
{
"address_components" : [
{
"long_name" : "Tehran",
"short_name" : "Tehran",
"types" : [ "locality", "political" ]
},
{
"long_name" : "Tehran",
"short_name" : "Tehran",
"types" : [ "administrative_area_level_2", "political" ]
},
{
"long_name" : "Tehran Province",
"short_name" : "Tehran Province",
"types" : [ "administrative_area_level_1", "political" ]
},
{
"long_name" : "Iran",
"short_name" : "IR",
"types" : [ "country", "political" ]
}
],
"formatted_address" : "Tehran, Tehran Province, Iran",
"geometry" : {
"bounds" : {
"northeast" : {
"lat" : 35.8345498,
"lng" : 51.6062163
},
"southwest" : {
"lat" : 35.5590784,
"lng" : 51.0934209
}
},
"location" : {
"lat" : 35.6891975,
"lng" : 51.3889736
},
"location_type" : "APPROXIMATE",
"viewport" : {
"northeast" : {
"lat" : 35.8345498,
"lng" : 51.6062163
},
"southwest" : {
"lat" : 35.5590784,
"lng" : 51.0934209
}
}
},
"place_id" : "ChIJ2dzzH0kAjj8RvCRwVnxps_A",
"types" : [ "locality", "political" ]
}
],
"status" : "OK"
}
所以你可以看到有一些我们需要在“位置”对象
属性 作为this answer说首先我们需要从顶部URL
得到Json的那么容易,我们添加JsonTask类
private class JsonTask extends AsyncTask {
protected void onPreExecute() {
super.onPreExecute();
// u can use a dialog here
}
protected String doInBackground(String... params) {
HttpURLConnection connection = null;
BufferedReader reader = null;
try {
URL url = new URL(params[0]);
connection = (HttpURLConnection) url.openConnection();
connection.connect();
InputStream stream = connection.getInputStream();
reader = new BufferedReader(new InputStreamReader(stream));
StringBuffer buffer = new StringBuffer();
String line = "";
while ((line = reader.readLine()) != null) {
buffer.append(line+"\n");
Log.d("Response: ", "> " + line); //here u ll get whole response...... :-)
}
return buffer.toString();
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
if (connection != null) {
connection.disconnect();
}
try {
if (reader != null) {
reader.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
return null;
}
@Override
protected void onPostExecute(String result) {
super.onPostExecute(result);
// here "result" is json as stting
}
}
}
调用和存储JSON字符串你需要这个代码
JsonTask getRequest = new JsonTask();
String JSONString = getRequest.execute("Url address here").get();
那么我们应该得到的经度和纬度。所以这里是s。TH,我们需要
JSONObject jsonResponse1;
try {
jsonResponse1 = new JSONObject(jsonMap1);
JSONArray cast = jsonResponse1.getJSONArray("results");
for (int i = 0; i < cast.length(); i++) {
JSONObject actor = cast.getJSONObject(i);
JSONObject name = actor.getJSONObject("geometry");
JSONObject location = name.getJSONObject("location");
lat1 = location.getString("lat");
lng1 = location.getString("lng");
}
} catch (JSONException e) {
Toast.makeText(mContext, e.toString(), Toast.LENGTH_SHORT).show();
}
LAT1和lng1有值:)