首页 | 源码下载 | 网站模板 | 网页特效 | 广告代码 | 网页素材 | 字体下载 | 书库 | 站长工具
会员投稿 投稿指南 RSS订阅
当前位置:主页>网络编程>java教程>资讯:Java通过google map api实现地址解析的方法

Java通过google map api实现地址解析的方法

www.jz123.cn  2010-01-05   来源:   中国建站    责任编辑(袁袁)    我要投递新闻

  地址解析就是将地址(如:广东省广州市)转换为地理坐标(如经度:113.26442,纬度:23.129074)的过程。google map api提供两种方法实现地址解析。

  第一种,是通过使用 GClientGeocoder 对象来实现,大家可以参考google map api的相关文档,以下是摘自google的相关代码


 var map = new GMap2(document.getElementById("map_canvas"));
  var geocoder = new GClientGeocoder();
  function showAddress(address) {
  geocoder.getLatLng(
  address,
  function(point) {
  if (!point) {
  alert("无法解析:" + address);
  } else {
  map.setCenter(point, 13);
  var marker = new GMarker(point);
  map.addOverlay(marker);
  marker.openInfoWindowHtml(address);
  }
  }
  );
  }

  第二种方法,就是通过HTTP请求直接访问。调用参数等相关说明请参考http://code.google.com/intl/zh-CN/apis/maps/documentation/services.html

  而通过java实现的方法如下


 /**
  * 利用googlemap api 通过 HTTP 进行地址解析
  * @param address 地址
  * @return HTTP状态代码,精确度(请参见精确度常数),纬度,经度
  */
  private String getLatlng(String address){
  String ret = "";
  if(address != null && !address.equals("")){
  try {
  address = URLEncoder.encode(address,"UTF-8");//进行这一步是为了避免乱码
  } catch (UnsupportedEncodingException e1) {
  logger.error("转码失败", e1);
  }
  String[] arr = new String[4];
  arr[0] = address;
  arr[1] = OUTPUT;
  arr[2] = SENSOR;
  arr[3] = KEY;
  String url = MessageFormat.format("http://maps.google.com/maps/geo?q={0}&output={1}&sensor={2}&key={3}",arr);
  URL urlmy = null;
  try {
  urlmy = new URL(url);
  HttpURLConnection con = (HttpURLConnection) urlmy.openConnection();
  con.setFollowRedirects (true );
  con.setInstanceFollowRedirects(false );
  con.connect();
  BufferedReader br = new BufferedReader(new InputStreamReader(con.getInputStream(),"UTF-8"));
  String s = "";
  StringBuffer sb = new StringBuffer("");
  while ((s = br.readLine()) != null ) {
  sb.append(s+"rn");
  }
  ret = ""+sb;
  } catch (MalformedURLException e) {
  logger.error("通过http方式获取地址信息失败", e);
  } catch (IOException e) {
  logger.error("文件读取失败", e);
  }
  }
  return ret;
  }

  大家可以通过测试页面进行测试


上一篇:proxool.default (HouseKeeper.java:149)异常 下一篇:调整Java虚拟机 支持其运行的Java应用程序

评论总数:0 [ 查看全部 ] 网友评论


关于我们隐私版权广告服务友情链接联系我们网站地图