ANDROID_MARS学习笔记_S03_006_geocoding、HttpClient
2016-02-20 21:09
1116 查看
一、简介
二、代码
1.xml
(1)AndroidManifest.xml
2.java
(1)MainActivity.java
(2)GeoResult.java
(3)Result.java
(4)http://maps.google.com/maps/api/geocode/json?latlng=40.124356,-73.961472&sensor=false
和http://maps.google.com/maps/api/geocode/xml?latlng=40.124356,-73.961472&sensor=false的返回结果分别如下:
二、代码
1.xml
(1)AndroidManifest.xml
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/> <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/> <uses-permission android:name="android.permission.INTERNET"/>
2.java
(1)MainActivity.java
package com.location4; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import org.apache.http.HttpEntity; import org.apache.http.HttpResponse; import org.apache.http.client.ClientProtocolException; import org.apache.http.client.HttpClient; import org.apache.http.client.methods.HttpGet; import org.apache.http.impl.client.DefaultHttpClient; import android.annotation.SuppressLint; import android.app.Activity; import android.os.Bundle; import android.os.StrictMode; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import com.google.gson.Gson; /** * 根据地址查询经纬度: * http://maps.google.com/maps/api/geocode/json?address=SFO&sensor=false * * 根据经纬度查询地址: * http://maps.google.com/maps/api/geocode/json?latlng=40.124356,-73.961472&sensor=false * * bounds的作用:在指定的经纬度范围内查询 * http://maps.google.com/maps/api/geocode/json?address=SFO & bounds=39.125367,-118.326182|42.271635,-40.287321 & sensor=false * * region的作用:在给定国家代码的国家中查询(es:西班牙) * http://maps.google.com/maps/api/geocode/json?address=Toledo&sensor=false®ion=es */ @SuppressLint("NewApi") public class MainActivity extends Activity { private Button geocodingButton = null; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); if (android.os.Build.VERSION.SDK_INT > 9) { StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build(); StrictMode.setThreadPolicy(policy); } geocodingButton = (Button)findViewById(R.id.geoButton); geocodingButton.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { //针对上一节中Geocoder服务不可用的情况,此处使用google maps中的服务替代 //String url = "http://maps.google.com/maps/api/geocode/json?address=SFO&sensor=false"; String url = "http://maps.google.com/maps/api/geocode/json?latlng=40.124356,-73.961472&sensor=false"; HttpClient client = new DefaultHttpClient(); StringBuilder responseData = new StringBuilder(""); try { //向指定的url发送http请求 HttpResponse response = client.execute(new HttpGet(url)); //取得服务器返回的响应 HttpEntity entity = response.getEntity(); BufferedReader reader = new BufferedReader(new InputStreamReader(entity.getContent())); String line = ""; while((line = reader.readLine()) != null) { responseData.append(line); } } catch (ClientProtocolException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } Gson gson = new Gson(); GeoResult geoResult = gson.fromJson(responseData.toString(), GeoResult.class); System.out.println(responseData); System.out.println(geoResult); } }); } }
(2)GeoResult.java
package com.location4; import java.util.List; public class GeoResult { private String status; private List<Result> results; public String getStatus() { return status; } public void setStatus(String status) { this.status = status; } public List<Result> getResults() { return results; } public void setResults(List<Result> results) { this.results = results; } @Override public String toString() { return "GeoResult [status=" + status + ", results=" + results + "]"; } }
(3)Result.java
package com.location4; import java.util.Arrays; public class Result { private String[] types; private String formatted_address; private String place_id; public String getPlace_id() { return place_id; } public void setPlace_id(String place_id) { this.place_id = place_id; } public String[] getTypes() { return types; } public void setTypes(String[] types) { this.types = types; } public String getFormatted_address() { return formatted_address; } public void setFormatted_address(String formatted_address) { this.formatted_address = formatted_address; } @Override public String toString() { return "Result [types=" + Arrays.toString(types) + ", formatted_address=" + formatted_address + ", place_id=" + place_id + "]"; } }
(4)http://maps.google.com/maps/api/geocode/json?latlng=40.124356,-73.961472&sensor=false
和http://maps.google.com/maps/api/geocode/xml?latlng=40.124356,-73.961472&sensor=false的返回结果分别如下:
{ "results" : [ { "address_components" : [ { "long_name" : "511", "short_name" : "511", "types" : [ "street_number" ] }, { "long_name" : "Ocean Avenue", "short_name" : "Ocean Ave", "types" : [ "route" ] }, { "long_name" : "Sea Girt", "short_name" : "Sea Girt", "types" : [ "locality", "political" ] }, { "long_name" : "Monmouth County", "short_name" : "Monmouth County", "types" : [ "administrative_area_level_2", "political" ] }, { "long_name" : "New Jersey", "short_name" : "NJ", "types" : [ "administrative_area_level_1", "political" ] }, { "long_name" : "美国", "short_name" : "US", "types" : [ "country", "political" ] }, { "long_name" : "08750", "short_name" : "08750", "types" : [ "postal_code" ] }, { "long_name" : "2712", "short_name" : "2712", "types" : [ "postal_code_suffix" ] } ], "formatted_address" : "511 Ocean Ave, Sea Girt, NJ 08750美国", "geometry" : { "location" : { "lat" : 40.131507, "lng" : -74.028998 }, "location_type" : "ROOFTOP", "viewport" : { "northeast" : { "lat" : 40.1328559802915, "lng" : -74.02764901970851 }, "southwest" : { "lat" : 40.1301580197085, "lng" : -74.03034698029151 } } }, "place_id" : "ChIJSUENuniIwYkRm9pgGolNa2s", "types" : [ "street_address" ] }, { "address_components" : [ { "long_name" : "美国", "short_name" : "US", "types" : [ "country", "political" ] } ], "formatted_address" : "美国", "geometry" : { "bounds" : { "northeast" : { "lat" : 71.3867745, "lng" : -66.9502861 }, "southwest" : { "lat" : 18.9106768, "lng" : 172.4458955 } }, "location" : { "lat" : 37.09024, "lng" : -95.712891 }, "location_type" : "APPROXIMATE", "viewport" : { "northeast" : { "lat" : 49.38, "lng" : -66.94 }, "southwest" : { "lat" : 25.82, "lng" : -124.39 } } }, "place_id" : "ChIJCzYy5IS16lQRQrfeQ5K5Oxw", "types" : [ "country", "political" ] } ], "status" : "OK" }
<GeocodeResponse> <status>OK</status> <result> <type>street_address</type> <formatted_address>511 Ocean Ave, Sea Girt, NJ 08750美国</formatted_address> <address_component> <long_name>511</long_name> <short_name>511</short_name> <type>street_number</type> </address_component> <address_component> <long_name>Ocean Avenue</long_name> <short_name>Ocean Ave</short_name> <type>route</type> </address_component> <address_component> <long_name>Sea Girt</long_name> <short_name>Sea Girt</short_name> <type>locality</type> <type>political</type> </address_component> <address_component> <long_name>Monmouth County</long_name> <short_name>Monmouth County</short_name> <type>administrative_area_level_2</type> <type>political</type> </address_component> <address_component> <long_name>New Jersey</long_name> <short_name>NJ</short_name> <type>administrative_area_level_1</type> <type>political</type> </address_component> <address_component> <long_name>美国</long_name> <short_name>US</short_name> <type>country</type> <type>political</type> </address_component> <address_component> <long_name>08750</long_name> <short_name>08750</short_name> <type>postal_code</type> </address_component> <address_component> <long_name>2712</long_name> <short_name>2712</short_name> <type>postal_code_suffix</type> </address_component> <geometry> <location> <lat>40.1315070</lat> <lng>-74.0289980</lng> </location> <location_type>ROOFTOP</location_type> <viewport> <southwest> <lat>40.1301580</lat> <lng>-74.0303470</lng> </southwest> <northeast> <lat>40.1328560</lat> <lng>-74.0276490</lng> </northeast> </viewport> </geometry> <place_id>ChIJSUENuniIwYkRm9pgGolNa2s</place_id> </result> <result> <type>country</type> <type>political</type> <formatted_address>美国</formatted_address> <address_component> <long_name>美国</long_name> <short_name>US</short_name> <type>country</type> <type>political</type> </address_component> <geometry> <location> <lat>37.0902400</lat> <lng>-95.7128910</lng> </location> <location_type>APPROXIMATE</location_type> <viewport> <southwest> <lat>25.8200000</lat> <lng>-124.3900000</lng> </southwest> <northeast> <lat>49.3800000</lat> <lng>-66.9400000</lng> </northeast> </viewport> <bounds> <southwest> <lat>18.9106768</lat> <lng>172.4458955</lng> </southwest> <northeast> <lat>71.3867745</lat> <lng>-66.9502861</lng> </northeast> </bounds> </geometry> <place_id>ChIJCzYy5IS16lQRQrfeQ5K5Oxw</place_id> </result> </GeocodeResponse>
相关文章推荐
- Android开发学习之路--网络编程之xml、json
- Android开发学习之路--网络编程之xml、json
- TCP协议中的三次握手和四次挥手(图解)
- java 虚拟机访问对象的两种机制到底有什区别 http://www.cnblogs.com/h2-database/archive/2012/06/27/2572498.html
- <<Effective TCP/IP Programming>>读书笔记
- 具体解释http 协议
- JVM 内存初学 (堆(heap)、栈(stack)和方法区(method) ) http://www.open-open.com/lib/view/open1432200119489.html
- java http://blog.csdn.net/wike163/article/details/6635321
- Httpwatch抓包分析
- 计算机网络7--报文交换
- fpga+dp83848实现百兆网络高速数据实时采集
- Ubuntu14.04 配置静态ip地址
- OkHttp3几个简单的例子和在子线程更新UI线程的方法
- OkHttp3几个简单的例子和在子线程更新UI线程的方法
- java实现的深度神经网络
- TCP三次握手和四次挥手详解
- TCP协议详解!!!
- HttpClient工具
- 20160220 网络请求
- Android中解析网络请求的URL