android获取城市代码,如何从城市名称获取经度,纬度android代码

为时已晚,但对别人有同样的问题

后第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有值:)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值