`

java如何利用google map api V3进行地址解析、反向地址解析

阅读更多

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

 

附件中的代码没有修改,请下载的朋友注意自行修改,不便之处,敬请原谅!

6
0
分享到:
评论
2 楼 samson9413 2012-09-25  
getGeometry()
提示错误:The method getGeometry() is undefined for the type Results
1 楼 samson9413 2012-09-25  

相关推荐

    Java 调用Google Map Api解析地址,解析经纬度实例

    使用google地图的反向地址解析功能,提供一个经纬度得到对应地址,或者给出模糊地址,得到经纬度,放在java后台代码中处理,这个使用的是Google的地理编码服务。一般而言数据量不大的情况使用是不限制的。按照Google...

    谷歌地图Google Map API V3中文开发文档

    Geocoder 是谷歌地图 Google Map API V3 中的一个组件,用于将地址转换为地理坐标。开发者可以使用 Geocoder 对象来将地址转换为地理坐标,以便在地图上标记一个特定的位置。 七、DirectionsRenderer 和 ...

    google map api v3源码

    谷歌地图API V3是Google提供的一种用于在网页上嵌入交互式地图的服务,它基于JavaScript编程语言,允许开发者创建各种地图应用。这个源码可能是谷歌地图API V3的一个示例项目,不含任何特定的API密钥,因此可以作为...

    Google Map api V3 (3.9.12)的离线开发包

    Google Map API V3(3.9.12)是谷歌提供的一个用于在网页上嵌入交互式地图的服务,它是Google Maps JavaScript API的第三个主要版本。这个离线开发包允许开发者在没有网络连接的情况下进行地图应用的开发和测试,这...

    谷歌地图API-google map api v3

    ### 谷歌地图API V3 - 详细知识点解析 #### 概述 谷歌地图API V3(Google Maps API V3)是谷歌提供的一套强大的工具和服务集合,旨在帮助开发者在网页上集成交互式地图。它支持多种功能,如自定义地图样式、添加...

    在JAVA类中解析GOOGLE MAP地址和反向解析纬经度

    在Java编程环境中,解析Google Map地址以及反向解析经纬度是一项常见的任务,特别是在地理信息系统(GIS)相关的项目中。Google Maps API提供了丰富的功能,包括地址转换(Geocoding)和反向地理编码(Reverse ...

    Google Map Api 调用样例程序(Java版)

    本示例程序是基于Java语言实现的,它为我们展示了如何利用Google Map API来画点和画线,这在地理信息系统(GIS)应用或者导航系统中是非常常见的需求。 首先,我们需要理解Google Map API的基本概念。API全称为...

    经典教程:JavaScript调用Google Map API V3

    JavaScript调用Google Map API V3是一项常见的Web开发任务,它允许开发者在网页中嵌入交互式地图,并根据需求进行自定义。以下是对这个经典教程的详细解析: 1. **目标** - 整个教程旨在教会读者如何利用...

    Google Map Api

    最新版的Google Map API是V3,它是一个基于JavaScript的API,具有高度可定制性和灵活性。 在Google Map API V3中,开发者可以实现以下主要功能: 1. **地图嵌入**:通过简单的HTML和JavaScript代码,可以在网页上...

    java实现google maps api

    Java 实现 Google Maps API 是一个将谷歌地图服务集成到Java应用程序中的过程,它允许开发者利用谷歌地图的强大功能,如定位、路线规划、地理编码、覆盖图层等。本篇文章将深入探讨如何通过Java来调用Google Maps ...

    google map api v3 ExtDraggableObject

    谷歌地图API V3是Google为开发者提供的一种强大的工具,用于在网页上集成和操作地图。在API中,`ExtDraggableObject`是一个自定义扩展类,它允许用户将地图上的对象(如标记、覆盖物等)进行拖放操作,极大地增强了...

    Google Map API 使用示例

    Google Map API 是一款强大的工具,它允许开发者在自己的网站或应用程序中嵌入地图功能,提供定位、导航、地理编码、路线规划等多种服务。本示例将深入探讨如何使用 Google Map API,帮助你理解和掌握其核心概念及...

    Google Maps API V3 中文参考文档(JavaScript)

    在 Google Maps API V3 中,Map 是地图的核心组件,提供了多种配置选项和事件监听器。开发者可以使用 MapOptions 对象来配置地图的基本属性,如中心点、缩放级别、地图类型等。同时,MapTypeId 对象提供了多种地图...

    google map 3.0 反向解析地址

    在Google Map 3.0版本中,反向解析地址(Geocoding)是一项重要的功能,它允许用户通过输入一个具体的地址来获取对应的经纬度坐标。这种技术在众多应用中都有所应用,比如导航系统、位置服务、数据分析等。 反向...

    googlemap 反向地址解析示例

    googlemap 反向地址解析示例,即由坐标解析出街道门牌号地址。

    google Map api v3学习例子

    通过这个"google Map api v3学习例子",你可以逐步掌握如何利用Google Maps API V3构建交互式地图应用,包括添加标记、处理事件、展示叠加层等功能。实践中不断探索,你会发现Google Maps API V3的强大和灵活性,能...

    google Map Api反解析.htm

    google Map Api反解析.htm 谷歌地图地理解析和反解析geocode.geocoder详解

    googleMap根据经纬度获取地理位置

    Google Maps API 是一个广泛使用的工具,它允许开发者通过JavaScript或者其他的编程语言与Google Maps进行交互,实现各种功能,如定位、导航、标记等。在这个场景中,我们将主要探讨如何使用Google Maps API 根据...

    google map api 实例

    为了添加搜索功能,我们需要利用谷歌地图的Geocoding API。这个API可以将地址文本转换为地理坐标。首先,创建一个输入框让用户输入搜索地址,并监听其`keyup`事件: ```html 搜索地址"> ``` 然后,在JavaScript中...

    Google Map V3 API

    **Google Map V3 API**是谷歌提供的一种用于在网页中集成地图功能的接口,它允许开发者利用JavaScript语言创建交互式的地图应用。这个API是Google Maps API的第三个主要版本,提供了更多的功能、更好的性能以及更...

Global site tag (gtag.js) - Google Analytics