地址解析就是将地址(如广东省广州市)转换为地理坐标(如经度纬度)的过程google map api提供两种方法实现地址解析
第一种是通过使用 GClientGeocoder 对象来实现大家可以参考google map api的相关文档以下是摘自google的相关代码
var map = new GMap(documentgetElementById(map_canvas));
var geocoder = new GClientGeocoder();
function showAddress(address) {
geocodergetLatLng(
address
function(point) {
if (!point) {
alert(无法解析: + address);
} else {
mapsetCenter(point );
var marker = new GMarker(point);
mapaddOverlay(marker);
markeropenInfoWindowHtml(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 && !addressequals()){
try {
address = URLEncoderencode(addressUTF);//进行这一步是为了避免乱码
} catch (UnsupportedEncodingException e) {
loggererror(转码失败 e);
}
String[] arr = new String[];
arr[] = address;
arr[] = OUTPUT;
arr[] = SENSOR;
arr[] = KEY;
String url = MessageFormatformat({}&output={}&sensor={}&key={}arr);
URL urlmy = null;
try {
urlmy = new URL(url);
HttpURLConnection con = (HttpURLConnection) urlmyopenConnection();
consetFollowRedirects (true );
consetInstanceFollowRedirects(false );
nnect();
BufferedReader br = new BufferedReader(new InputStreamReader(congetInputStream()UTF));
String s = ;
StringBuffer sb = new StringBuffer();
while ((s = brreadLine()) != null ) {
sbappend(s+\r\n);
}
ret = +sb;
} catch (MalformedURLException e) {
loggererror(通过http方式获取地址信息失败 e);
} catch (IOException e) {
loggererror(文件读取失败 e);
}
}
return ret;
}
大家可以通过测试页面进行测试