谷歌地图api国内 java如何通过google map api实现地址解析
java如何通过google map api实现地址解析
地址解析就是将地址(如 广东省广州市)转换为地理坐标(如经度 纬度 )的过程 google map api提供两种方法实现地址解析
第一种 是通过使用 GClientGeocoder 对象来实现 大家可以参考google map api的相关文档 以下是摘自google的相关代码
var map = new GMap (document getElementById( map_canvas ));

var geocoder = new GClientGeocoder();
function showAddress(address) {
geocoder getLatLng(
address
function(point) {
if (!point) {
alert( 无法解析: + address);
} else {
map setCenter(point );
var marker = new GMarker(point);
map addOverlay(marker);
marker openInfoWindowHtml(address);
}
}
);
}
第二种方法 就是通过HTTP请求直接访问 调用参数等相关说明请参考 CN/apis/maps/documentation/l
而通过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 );//进行这一步是为了避免乱码
} catch (UnsupportedEncodingException e ) {
logger error( 转码失败 e );
}
String[] arr = new String[ ];
arr[ ] = address;
arr[ ] = OUTPUT;
arr[ ] = SENSOR;
arr[ ] = KEY;
String url = MessageFormat format( { }&output={ }&sensor={ }&key={ } arr);
URL urlmy = null;
try {
urlmy = new URL(url);
HttpURLConnection con = (HttpURLConnection) urlmy openConnection();
con setFollowRedirects (true );
con setInstanceFollowRedirects(false );
nnect();
BufferedReader br = new BufferedReader(new InputStreamReader(con getInputStream() UTF ));
String s = ;
StringBuffer sb = new StringBuffer( );
while ((s = br readLine()) != null ) {
sb append(s+ rn );
}
ret = +sb;
} catch (MalformedURLException e) {
logger error( 通过方式获取地址信息失败 e);
} catch (IOException e) {
logger error( 文件读取失败 e);
}
}
return ret;
}
lishixinzhi/Article/program/Java/hx/201311/27069