栏目导航
热点推荐
- 三十条有用的 Java 编程规则
- Java制作水印图片源码
- Java常见异常及可能的导致原因
- Java中的修饰词使用方法总结
- J2EE系统异常的处理准则
- Java中的异常、断言、日志解析(
- Java面试技巧:Java面试题集锦(
- 面向Java开发人员的Scala指南:
- Java程序员:一刻钟精通正则表达
- 网友经验分享:学好java开发的关
- 专家解答:创建表格与数据库进行
- Java远程访问Domino数据库
阅览排行
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; } |
大家可以通过测试页面进行测试
0
上一篇:proxool.default (HouseKeeper.java:149)异常 下一篇:调整Java虚拟机 支持其运行的Java应用程序