展会信息港展会大全

google根据坐标反向获取地址 android开发
来源:互联网   发布日期:2016-01-19 12:27:40   浏览:1792次  

导读:package com example adrress;import java io BufferedReader;import java io IOException;import java io InputStream;import java io InputStreamReader;import java util Locale;import org apache ht ...

package com.example.adrress;

import java.io.BufferedReader;

import java.io.IOException;

import java.io.InputStream;

import java.io.InputStreamReader;

import java.util.Locale;

import org.apache.http.HttpEntity;

import org.apache.http.HttpResponse;

import org.apache.http.HttpStatus;

import org.apache.http.client.ClientProtocolException;

import org.apache.http.client.methods.HttpGet;

import org.apache.http.impl.client.DefaultHttpClient;

import org.apache.http.params.CoreConnectionPNames;

import org.apache.http.params.HttpParams;

import org.json.JSONArray;

import org.json.JSONException;

import org.json.JSONObject;

import android.app.Activity;

import android.os.Bundle;

import android.os.Handler;

import android.os.Message;

import android.util.Log;

import android.view.View;

import android.view.View.OnClickListener;

import android.widget.TextView;

public class MainActivity extends Activity {

private String TAG = "test";

private double latitude = 22.5362079;

private double longtitude = 113.9423168;

private Handler mHandler;

private TextView mTextView;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

mTextView = (TextView) findViewById(R.id.textView1);

mHandler = new Handler() {

@Override

public void handleMessage(Message msg) {

super.handleMessage(msg);

switch (msg.what) {

case 0:

String respone = (String) msg.obj;

String result = parseJson(respone);

mTextView.setText(result);

Log.d(TAG, "您所在的地址是:" + result);

break;

}

}

};

findViewById(R.id.button1).setOnClickListener(new OnClickListener() {

@Override

public void onClick(View v) {

new Thread() {

public void run() {

String respone = getRespone(Locale.TRADITIONAL_CHINESE);

if (respone != null) {

Message msg = mHandler.obtainMessage();

msg.obj = respone;

msg.what = 0;

mHandler.sendMessage(msg);

}

};

}.start();

}

});

}

private String getRespone(Locale locale) {

try {

String url = "http://maps.googleapis.com/maps/api/geocode/json?latlng=" + latitude + ","

+ longtitude + "&sensor=false&language=" + locale;

// 1、设置httpclient对象

DefaultHttpClient httpclient = new DefaultHttpClient();

HttpParams params = httpclient.getParams();

params.setParameter(CoreConnectionPNames.CONNECTION_TIMEOUT, 5000);

params.setParameter(CoreConnectionPNames.SO_TIMEOUT, 5000);

// 2、设置请求方式

HttpGet request = new HttpGet(url);

// 3、执行请求

HttpResponse response = httpclient.execute(request);

// 4、获得响应

if (response.getStatusLine().getStatusCode() == HttpStatus.SC_OK) {

HttpEntity entity = response.getEntity();

InputStream is = entity.getContent();

BufferedReader in = new BufferedReader(new InputStreamReader(is));

StringBuilder out = new StringBuilder();

String line = null;

while ((line = in.readLine()) != null) {

out.append(line);

}

Log.d(TAG, "out: " + out.toString().trim());

in.close();

is.close();

return out.toString();

}

} catch (ClientProtocolException e) {

e.printStackTrace();

} catch (IOException e) {

e.printStackTrace();

}

return null;

}

private String parseJson(String respone) {

try {

JSONObject jsonObject = new JSONObject(respone);

String status = jsonObject.getString("status");

if ("OK".equals(status)) {

String results = jsonObject.getString("results");

JSONArray jsonArray = new JSONArray(results);

int length = jsonArray.length();

Log.d(TAG, "jsonArray.length(): " + jsonArray.length());

String addrress = null;

for (int i = 0; i < length; i++) {

JSONObject jsonObject2 = jsonArray.getJSONObject(i);

String formatted_address = jsonObject2.getString("formatted_address");

Log.i(TAG, "formatted_address: " + formatted_address);

if (i == 0) {

addrress = formatted_address;

}

}

return addrress;

}

} catch (JSONException e) {

e.printStackTrace();

}

return null;

}

}

日志: 12-27 11:25:07.910: I/test(28487): formatted_address: 中華人民共和國廣東省深圳市南山區科技南一路 邮政编码: 518057 12-27 11:25:07.910: I/test(28487): formatted_address: 中華人民共和國深圳市南山區深大地鐵站 邮政编码: 518057 12-27 11:25:07.910: I/test(28487): formatted_address: 中華人民共和國廣東省深圳市南山區 邮政编码: 518057 12-27 11:25:07.910: I/test(28487): formatted_address: 中華人民共和國廣東省深圳市南山區 12-27 11:25:07.910: I/test(28487): formatted_address: 中華人民共和國廣東省深圳市 12-27 11:25:07.910: I/test(28487): formatted_address: 中華人民共和國廣東省 12-27 11:25:07.910: I/test(28487): formatted_address: 中華人民共和國 12-27 11:25:07.910: D/test(28487): 您所在的地址是:中華人民共和國廣東省深圳市南山區科技南一路 邮政编码: 518057

赞助本站

人工智能实验室
AiLab云推荐
展开

热门栏目HotCates

Copyright © 2010-2024 AiLab Team. 人工智能实验室 版权所有    关于我们 | 联系我们 | 广告服务 | 公司动态 | 免责声明 | 隐私条款 | 工作机会 | 展会港