Android 基于位置的开发与百度地图 (二)

反向地理编码

上节中,我们只是获取到了当前位置的经纬度,但是很遗憾的是并不是每个人都能看懂,现在就来通过反向地理编码,将经纬度转化为我们看得懂的信息。
<span style="font-size:14px;">new Thread(new Runnable() {
			
			@Override
			public void run() {
				//组装反向地理编码的接口地址
				StringBuilder url=new StringBuilder();
				url.append("http://maps.googleapis.com/maps/api/geocode/json?latlng=");
				url.append(location.getLatitude()).append(",");
				url.append(location.getLongitude());
				url.append("&sensor=false");
				HttpClient httpClient=new DefaultHttpClient();
				HttpGet httpGet=new HttpGet(url.toString());
				
				//在请求消息头中指定语言,保证服务器会返回中文数据
				httpGet.addHeader("Accept-Language","zh-CN");
				try {
					HttpResponse httpResponse=httpClient.execute(httpGet);
					if (httpResponse.getStatusLine().getStatusCode()==200){
						HttpEntity entity=httpResponse.getEntity();
						String response=EntityUtils.toString(entity,"utf-8");
						JSONObject jsonObject=new JSONObject(response);
						JSONArray resultArray=jsonObject.getJSONArray("results");
						if (resultArray.length()>0){
							JSONObject subObject=resultArray.getJSONObject(0);
							String address=subObject.getString("formatted_address");
							Message message=new Message();
							message.what=SHOW_LOCATION;
							message.obj=address;
							handler.sendMessage(message);
						}
					
					}
				} catch (ClientProtocolException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				} catch (IOException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				} catch (JSONException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
				
			}
		}).start();
		
	}
	
	private Handler handler =new Handler(){
		@Override
		public void handleMessage(Message msg) {
			switch (msg.what){
			case SHOW_LOCATION:
				String currentPosition=(String)msg.obj;
				textView.setText(currentPosition);
				break;
				default:
					break;
			}
		}
	};</span>


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值