`

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);
	}

}



分享到:
评论

相关推荐

    读取Excel批量获取地址经纬度

    本教程将专注于“读取Excel批量获取地址经纬度”的方法,这是一个高效处理大量地理位置信息的实用技巧。我们将主要讨论如何利用Excel作为数据源,结合特定的技术手段来获取腾讯地图上的经纬度坐标,并处理可能出现的...

    根据地址返回经纬度java版

    ### 知识点详解 #### 一、百度地图API简介 百度地图API是百度提供...通过以上分析,我们可以了解到如何使用Java和百度地图API实现地址到经纬度的转换。这对于地理位置相关的应用非常有用,比如导航、物流追踪等场景。

    C#调用百度地图获取经纬度

    总的来说,掌握C#调用百度地图API获取经纬度的方法,对于开发涉及地理位置的应用至关重要。这需要对C#的WebBrowser控件、JavaScript编程以及百度地图API有深入的理解,同时也涉及到了文件操作和多语言环境下的交互。...

    基于Googlemap的地址转换经纬度

    Google Maps API提供了一个强大的服务,可以将地址解析为经纬度坐标,这在Web开发和数据分析中非常实用。本教程将详细介绍如何使用Google Maps API来实现这一功能,以处理CSV文件中的地址。 首先,我们需要理解CSV...

    java调用百度地图API反解析经纬码.rar

    本主题聚焦于如何使用Java语言调用百度地图API来实现经纬度的反解析,即将经纬度坐标转化为实际的地址信息。下面我们将深入探讨这个过程。 首先,让我们了解什么是经纬度。经纬度是地理坐标系统的一部分,用于确定...

    经纬度解析成中文地址_实现经纬度解析成中文地址_解析经纬度_经纬度_

    `addressComponent`字段包含了根据经纬度解析出的完整中文地址。 4. 错误处理:别忘了检查HTTP响应的状态码以及API返回的错误信息,确保请求成功并正确处理任何可能出现的问题。 通过以上步骤,我们便可以在C#...

    GPS模块经纬度读取

    4. 数据可视化:将GPS数据展示在地图上,可以使用Web地图API如Google Maps或OpenStreetMap。 5. 位置服务:提供接口供其他应用调用,如导航、追踪、地理围栏等功能。 总结来说,通过串口连接GPS模块并读取经纬度...

    Python 利用高德地图api实现经纬度与地址的批量转换

    将以上函数整合到一个完整的脚本中,可以实现批量读取经纬度数据,然后进行逆地理编码,将经纬度转换为地址。需要注意的是,由于API请求可能有频率限制,因此在实际应用中可能需要添加延时或其他策略来避免过快的...

    python通过百度地图API获取某地址的经纬度详解

    总的来说,通过Python调用百度地图API获取经纬度是一项实用的技术,它可以帮助你在各种项目中轻松处理地理位置信息。如果你在实际使用过程中遇到问题,可以参考百度地图的官方文档或与其他开发者交流,以便更好地...

    高德MapDemo[加载高德地图在地图上标记点,保存经纬度到数据库

    当应用启动或地图重新加载时,程序会查询数据库中保存的标记信息,读取最近的或特定的经纬度,然后调用高德地图API的定位方法,如`setCenterCoordinate`,将地图中心点移动到这些标记点上,使得用户能够快速看到自己...

    baidu_map.zip_Api. Map. Baidu_java baidu map_百度 map_百度地图定位

    在网络定位中,API会根据用户设备的IP地址或Wi-Fi信号来估算位置;在GPS定位下,API可以直接读取设备的GPS数据,提供更精确的定位信息。在Java应用中,通过调用相应的API接口,可以获取到用户的经纬度坐标,用于显示...

    获取经纬度

    这两种服务通常由地图提供商提供,如Google Geocoding API和OpenStreetMap Nominatim。 7. **硬件集成** 在嵌入式系统或特定设备中,可能需要集成专门的硬件模块来获取经纬度,比如在无人机或自动驾驶汽车中。 8....

    C# GoogleMap

    总结,将Google Maps集成到C# WinForms应用程序中,需要理解WebBrowser控件的使用、Google Maps API的调用以及JavaScript的交互逻辑。通过这些步骤,你可以在WinForms应用中实现地图搜索、定位等丰富的地图功能。

    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)

    C# GoogleMap纠偏

    总结来说,"C# GoogleMap纠偏"是一个涉及数据处理、坐标转换、纠偏算法、API集成以及用户界面设计等多个环节的项目。通过学习和实践,开发者不仅可以提升C#编程技能,还能掌握GIS领域的专业知识,提高地图应用的开发...

    flutter + SpringBoot + MySql 实现高德地图定位获取位置信息插入数据库并计算出经纬度之间的距离

    flutter + SpringBoot + MySql 实现高德地图定位获取位置信息插入数据库并计算出经纬度之间的距离

    调用百度地图API显示虚线运动轨迹

    确保坐标数据格式符合百度地图API的要求,通常为经纬度坐标。 3. **绘制轨迹**:百度地图API提供了折线图层(Overlay)类,可以用于绘制轨迹。你可以创建一个自定义的Overlay子类,重写其draw方法来绘制虚线。在...

    百度地图获取当前的经纬度

    <com.baidu.mapapi.map.MapView android:id="@+id/bmapView" android:layout_width="match_parent" android:layout_height="match_parent" android:clickable="true" /> ``` 在对应的Activity中初始化MapView,...

Global site tag (gtag.js) - Google Analytics