google map api的V3版本已经出来好一阵子了,但是由于工作忙,所以一直没有时间去捣腾它,最近看了一下,官方说V2快不能用了,提示尽快升级到V3版本,于是赶紧学习了一下,因为刚好我的网站有使用到google map api。
V3版本已经不用再申请key了,当然,一如既往是免费的,除非你是要使用Premier版本。没有了域名限制,所以使用起来方便多了,以前是本地的和远程的都要使用不同的key,更新前不小心忘记改过来的话导致使用不了话,有时还真的想不起是这个问题。
V3版本把地址解析和反向地址解析集成到了 Google Maps API Web Services里,这是一个为您的地图应用程序提供地理数据的Google服务的 HTTP 接口集合,其中还包括路线查询服务、海拔数据查询服务、位置查询服务等。
下面是通过调用google map api的接口实现地址解析和反向地址解析的java代码,返回结果格式我选择了json,然后通过json-lib来实现把json字符串转换成java对象。
/**
* 地址解析
* @param address 地址
* @return 经纬度,结果形如:lat,lng
*/
public static String getLatLngByAddress(String address){
String latLng = "";
BufferedReader in= null;
try {
URL url = new URL("http://maps.google.com/maps/api/geocode/json?address="+URLEncoder.encode(address,"UTF-8")+"&language=zh-CN&sensor=true");
HttpURLConnection httpConn = (HttpURLConnection) url.openConnection();
httpConn.setDoInput(true);
in = new BufferedReader(new InputStreamReader(httpConn.getInputStream(),"UTF-8"));//注意,这里要声明字符编码是UTF-8,否则会乱码
String line;
String result="";
while ((line = in.readLine()) != null) {
result += line;
}
in.close();
JSONObject jsonObject = JSONObject.fromObject( result );
GoogleMapJSONBean bean = (GoogleMapJSONBean) JSONObject.toBean( jsonObject, GoogleMapJSONBean.class );
latLng = bean.getResults()[0].getGeometry().getLocation().lat+","+bean.getResults()[0].getGeometry().getLocation().lng;
System.out.println(latLng);
} catch (MalformedURLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally{
if(in != null){
try {
in.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
return latLng;
}
/**
* 反向地址解析
* @param latLng 经纬度,格式形如:lat,lng
* @return 地址
*/
public static String getAddressByLatLng(String latLng){
String address = "";
BufferedReader in= null;
try {
URL url = new URL("http://maps.google.com/maps/api/geocode/json?latlng="+latLng+"&language=zh-CN&sensor=true");
HttpURLConnection httpConn = (HttpURLConnection) url.openConnection();
httpConn.setDoInput(true);
in = new BufferedReader(new InputStreamReader(httpConn.getInputStream(),"UTF-8"));//注意,这里要声明字符编码是UTF-8,否则会乱码 String line;
String result="";
while ((line = in.readLine()) != null) {
result += line;
}
in.close();
JSONObject jsonObject = JSONObject.fromObject( result );
GoogleMapJSONBean bean = (GoogleMapJSONBean) JSONObject.toBean( jsonObject, GoogleMapJSONBean.class );
address = bean.getResults()[0].formatted_address;
System.out.println("address="+address);
} catch (MalformedURLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (UnsupportedEncodingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return address;
}
附件我把整个项目上传了,里面包括了json-lib所需要用到的所有jar,你如果有需要可以下载来看看。
这两天趁着周末,终于把自家网站的google map api由v2升级到v3了,在这一过程中,发觉我之前这里发的代码有个地方会导致反向地址解析的结果存在乱码,就是定义BufferedReader的时候,没有声明字符编码,现在这里修正一下,
把代码中的in = new BufferedReader(new InputStreamReader(httpConn.getInputStream);
改为:
in = new BufferedReader(new InputStreamReader(httpConn.getInputStream(),"UTF-8"));
附件中的代码没有修改,请下载的朋友注意自行修改,不便之处,敬请原谅!
分享到:
相关推荐
使用google地图的反向地址解析功能,提供一个经纬度得到对应地址,或者给出模糊地址,得到经纬度,放在java后台代码中处理,这个使用的是Google的地理编码服务。一般而言数据量不大的情况使用是不限制的。按照Google...
谷歌升级后的地图demo,不包含密钥的开发。仅供借鉴
谷歌地图Google Map API中文开发文档 V3
谷歌地图api v3 学习文档,资料查询, 基础学习。
Google Map api V3 (3.9.12)的离线开发包
谷歌地图google map api v3 ExtDraggableObject可拖拽对象类
GoogleMaps API V3离线下载工具及使用.zip 主要对其地图的下载,及自我编制。 离线下完全可以使用,只需先进行地图的下载。 添加了控件,离线下可进行操作。。。
googlemap 反向地址解析示例,即由坐标解析出街道门牌号地址。
google Map Api反解析.htm 谷歌地图地理解析和反解析geocode.geocoder详解
Google Map API 使用示例
java实现google maps api接口实例
google map 3.0 反向解析地址 输入一个地址就能找到对应的坐标
谷歌MAP_V3中文详解以及一个简单例子
Google Map API V3 离线开发文档(与Google官网一模一样,经编辑后离线也能照样查看,速度提升一个等级) PS:文件不能重命名,而原因想必你懂的!
NULL 博文链接:https://topbox163.iteye.com/blog/659615
最新的Google Map Api 帮助文档 免费下载地址: http://www.hkmci.com
针对Google Map最新的API Version3,本文讲解怎么使用JavaScript调用该API,实现在网页中的使用地图的诸多功能。更多细节参考:http://blog.sina.com.cn/s/articlelist_1289503967_4_1.html
详尽的介绍了google map api 并简单的举了几个例子,能帮助你了解Google map 编程
Java写的一套Google Map演示程序,供参考!画点,画线!
GoogleMap中文教程,包含V3版本中文API,不过是通过翻译出来的,不过作为平时上不了网的脱机资源还是可以看看的。