`

java调用google map api 根据经纬度读取经纬度地址

    博客分类:
  • java
 
阅读更多
package B7.general;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLConnection;

import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.HttpException;
import org.apache.commons.httpclient.HttpMethod;
import org.apache.commons.httpclient.NameValuePair;
import org.apache.commons.httpclient.methods.GetMethod;
import org.apache.commons.httpclient.methods.PostMethod;
import org.json.JSONException;

public class HttpRequestUtil {

	public static String getRequestByUrl(String strurl){
        String strjson = "";
		try {
			URL url = new URL(strurl);
	        URLConnection conn = url.openConnection();
	        HttpURLConnection http = (HttpURLConnection)conn;
	        http.setRequestMethod("GET");
	        http.setDoInput(true);
	        http.setDoOutput(true);
	        http.connect();
	        InputStream in = http.getInputStream();
	        BufferedReader br = new BufferedReader(new InputStreamReader(in,"UTF-8"));
	        String s = null;
	        while((s = br.readLine()) != null) {
	        	strjson+=s;
	        }
	        br.close();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} 
		return strjson;
	}
	
	
	
	private static HttpMethod getGetMethod(String latlng) throws IOException {
		PostMethod post = new PostMethod("/maps/api/geocode/json");
		GetMethod get = new GetMethod("/maps/api/geocode/json");
		
		NameValuePair simcard = new NameValuePair("latlng", latlng);
		NameValuePair simcard1 = new NameValuePair("sensor", "false");
		NameValuePair simcard2 = new NameValuePair("language", "zh-CN");
		get.setQueryString(new NameValuePair[] { simcard, simcard1,simcard2});
		
		//InputStream input = new FileInputStream(new File("/home/ubuntu/my.txt"));
		//"".getBytes("ISO8859-1")
		//InputStream input = new StringBufferInputStream("my test aaaaaaaaaa");
		//post.setRequestBody(input);
		return get;
	}
	private static HttpMethod getPostMethod(String latlng) throws IOException {
		PostMethod post = new PostMethod("/maps/api/geocode/json");
		
		//latlng=40.714224,-73.961452&sensor=false&&language=zh-TW
		NameValuePair simcard = new NameValuePair("latlng", latlng);
		NameValuePair simcard1 = new NameValuePair("sensor", "false");
		NameValuePair simcard2 = new NameValuePair("language", "zh-CN");
		
		post.setRequestBody(new NameValuePair[] { simcard, simcard1,simcard2});
		//InputStream input = new FileInputStream(new File("/home/ubuntu/my.txt"));
		//"".getBytes("ISO8859-1")
		//InputStream input = new StringBufferInputStream("my test aaaaaaaaaa");
		//post.setRequestBody(input);
		return post;
	}
	
	/**
	 * 根据经纬度获取地址
	 * @param latlng
	 * @return
	 */
	public static  String getGoogleAddressBylatlng(String latlng){
		String strAddress = "";
		HttpClient client = new  HttpClient();
		client.getHostConfiguration().setHost("ditu.google.com", 80, "http");
		
		HttpMethod method = null;
		try {
			method = getGetMethod(latlng);
		} catch (IOException e1) {
			// TODO Auto-generated catch block
			e1.printStackTrace();
		}// 使用GET方式提交数据
		try {
			client.executeMethod(method);
		} catch (HttpException e1) {
			// TODO Auto-generated catch block
			e1.printStackTrace();
		} catch (IOException e1) {
			// TODO Auto-generated catch block
			e1.printStackTrace();
			return "获取经纬度地址异常";
		}
		// 打印服务器返回的状态
		int methodstatus = method.getStatusCode();
		StringBuffer sb = new StringBuffer();
		if(methodstatus == 200){
			try {
				BufferedReader rd = new BufferedReader(new InputStreamReader(method.getResponseBodyAsStream(),"UTF-8"));
				String line;
				while ((line = rd.readLine()) != null) {
					sb.append(line);

				}
				org.json.JSONObject jo;
				try {
					jo = new org.json.JSONObject(sb.toString());
			        org.json.JSONArray ja = jo.getJSONArray("results");
			        org.json.JSONObject jo1 = ja.getJSONObject(0);
			        System.out.println(jo1.getString("formatted_address"));
			        strAddress = jo1.getString("formatted_address");
				} catch (JSONException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
				rd.close();
			}catch (IOException e) {
				throw new RuntimeException("error", e);
			}
		}
		method.releaseConnection();
		return strAddress;
	}
	
	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		String str = getRequestByUrl("http://ditu.google.com/maps/api/geocode/json?latlng=31.1899209667,121.3918055000&sensor=false&&language=zh-CN");
		System.out.println(str);
		String strhttp = HttpRequestUtil.getGoogleAddressBylatlng("31.1899209667,121.3918055000");
		System.out.println(strhttp);
	}

}



分享到:
评论

相关推荐

    labview_从USB串口读取GPS经纬度信息,调用百度地图显示当前位置

    从USB串口读取GPS经纬度信息,调用百度地图显示当前位置(Read the GPS latitude and longitude information from the USB serial port, and call the Baidu map to show the current position)

    在ASP.NET中使用Google Maps

    例如,我想从SQL Server中读取经纬度信息,然后在Google Map中插入一个点。如果熟悉AJAX的话,很快就能得出答案。我们必须用JavaScript调用ASP.NET服务器端函数,利用得到的数据来绘制Google Map。简单吧?其实,...

    ASP.NET页面中使用Google Map

    例如,我想从SQL Server中读取经纬度信息,然后在Google Map中插入一个点。如果熟悉AJAX的话,很快就能得出答案。我们必须用JavaScript调用ASP.NET服务器端函数,利用得到的数据来绘制Google Map。简单吧?其实,...

    在ASP.NET中使用Google Map

    例如,我想从SQL Server中读取经纬度信息,然后在Google Map中插入一个点。如果熟悉AJAX的话,很快就能得出答案。我们必须用JavaScript调用ASP.NET服务器端函数,利用得到的数据来绘制Google Map。简单吧?其实,...

    Android集成主流优秀第三方组件框架

    地图定位工具类(ToolLocation.java),读取GPS状态、请求定位、获取经纬度等方法 社会化分享工具类(ToolShareSDK.java),各大开发平台分享API操作 短信验证码工具类(ToolMSM.java),移动/联通/电信三网发送手机...

    matlabm_map工具箱1.4

    具体作法为:下载.shp格式的行政边界文件( 国家基础地理信息系统的下载服务),将下载的.shp文件通过mapinfo转换成.dxf文件,利用已编译好的fortran程序,读取经纬度信息,输出.dat文件。导入matlab空间,可以直接m...

    集成目前Android主流优秀第三方组件

    地图定位工具类(ToolLocation.java),读取GPS状态、请求定位、获取经纬度等方法 社会化分享工具类(ToolShareSDK.java),各大开发平台分享API操作 短信验证码工具类(ToolMSM.java),移动/联通/电信三网发送手机...

    Android例子源码集成安卓主流优秀第三方组件框架.zip

    地图定位工具类(ToolLocation.java),读取GPS状态、请求定位、获取经纬度等方法 社会化分享工具类(ToolShareSDK.java),各大开发平台分享API操作 短信验证码工具类(ToolMSM.java),移动/联通/电信三网发送手机...

    集成安卓主流优秀第三方组件框架.zip

    地图定位工具类(ToolLocation.java),读取GPS状态、请求定位、获取经纬度等方法 社会化分享工具类(ToolShareSDK.java),各大开发平台分享API操作 短信验证码工具类(ToolMSM.java),移动/联通/电信三网发送手机...

    Google Android SDK开发范例大全(第3版) 4/5

    Google Map应用:GPS定位、规划导航路径、GPS Google地图、地址反查地理坐标等卫星全球定位实例。 创意程序设计:即时动态桌面、电蚊香、转转轮盘、任务管理器、中英发音字典、手机手电筒、GPS轨迹记录器、女性贴身...

    Google Android SDK开发范例大全(第3版) 3/5

    Google Map应用:GPS定位、规划导航路径、GPS Google地图、地址反查地理坐标等卫星全球定位实例。 创意程序设计:即时动态桌面、电蚊香、转转轮盘、任务管理器、中英发音字典、手机手电筒、GPS轨迹记录器、女性贴身...

    Google Android SDK开发范例大全(第3版) 5/5

    Google Map应用:GPS定位、规划导航路径、GPS Google地图、地址反查地理坐标等卫星全球定位实例。 创意程序设计:即时动态桌面、电蚊香、转转轮盘、任务管理器、中英发音字典、手机手电筒、GPS轨迹记录器、女性贴身...

    Google Android SDK开发范例大全(第3版) 1/5

    Google Map应用:GPS定位、规划导航路径、GPS Google地图、地址反查地理坐标等卫星全球定位实例。 创意程序设计:即时动态桌面、电蚊香、转转轮盘、任务管理器、中英发音字典、手机手电筒、GPS轨迹记录器、女性贴身...

    Google Android SDK开发范例大全(第3版)part2

     9.6 移动版Google Map  9.7 规划导航路径  9.8 移动设备上的Picasa相册  9.9 随身翻译机  9.10 通过YouTube ID调用YouTube播放影片  9.11 Google Analytics分析手机用户行为  第10章 创意Android程序...

    《Google Android SDK开发范例大全(第3版)》.pdf

    9.6 移动版google map 653 9.7 规划导航路径 658 9.8 移动设备上的picasa相册 664 9.9 随身翻译机 677 9.10 通过youtube id调用youtube播放影片 681 9.11 google analytics分析手机用户行为 686 ...

    Android 开发技巧

    9.55、将坐标传递到GOOGLE MAP并显示 277 9.56、获取本机电话号码 280 9.57、获得手机联系人 280 9.58、2.0以上版本查询联系人详细信息 282 9.59、2.0以上版本添加联系人 285 9.60、拨打电话 287 9.61、发送SMS、MMS...

    Android开发资料合集-World版!

    9.55、将坐标传递到GOOGLE MAP并显示 277 9.56、获取本机电话号码 280 9.57、获得手机联系人 280 9.58、2.0以上版本查询联系人详细信息 282 9.59、2.0以上版本添加联系人 285 9.60、拨打电话 287 9.61、发送SMS、MMS...

Global site tag (gtag.js) - Google Analytics