Java HttpClient访问百度地图服务
2014-12-25 10:46
288 查看
name 搜索名称
b 搜索范围 经纬度
size 返回记录条数
public List<CompanyVo> searchPOIByBaiduMap(@RequestParam(value = "name", defaultValue = "") String name, @RequestParam(value = "size", defaultValue = "0") int size,
@RequestParam(value = "b", defaultValue = "") String b) {
List<CompanyVo> list = new ArrayList<CompanyVo>();
HttpMethod method = null;
try {
StringBuilder urlBuilder = new StringBuilder();
urlBuilder.append("http://map.baidu.com/?newmap=1&reqflag=pcmap&biz=1&from=webmap&qt=s&da_src=pcmappg.searchBox.sugg&wd=");
urlBuilder.append(URLEncoder.encode(name, "utf-8"));
urlBuilder.append("&c=179&sug=1&b=(");
urlBuilder.append(b);
urlBuilder.append(")&from=webmap&tn=B_NORMAL_MAP&nn=0&t=");
urlBuilder.append(new Date().getTime());
StringBuffer response = new StringBuffer();
HttpClient client = new HttpClient();
method = new GetMethod(urlBuilder.toString());
client.getHttpConnectionManager().getParams().setConnectionTimeout(3000);
client.executeMethod(method);
if (method.getStatusCode() == HttpStatus.SC_OK) {
BufferedReader reader = new BufferedReader(new InputStreamReader(method.getResponseBodyAsStream(), "utf-8"));
String line;
while ((line = reader.readLine()) != null) {
response.append(line);
}
reader.close();
JSONObject result = JSONObject.fromObject(response.toString());
JSONArray content = (JSONArray) result.get("content");
int searchSize = size;
if(size > content.size()){
searchSize = content.size();
}
for (int i = 0; i < searchSize; i++) {
JSONObject obj = (JSONObject) content.get(i);
// id,name,code,address,longitude,latitude
String addr = "";
if (obj.containsKey("addr")) {
addr = obj.getString("addr");
}
CompanyVo vo = new CompanyVo(null, obj.getString("name"), "", addr, String.valueOf((Float.parseFloat(obj.getString("x")) * 0.01f)), String.valueOf((Float.parseFloat(obj
.getString("y")) * 0.01f)));
vo.setType("baidu");
list.add(vo);
}
}
} catch (URIException e) {
LOGGER.error("执行HTTP Get请求时,编码查询字符串“" + name + "”发生异常!", e);
} catch (HttpException e) {
LOGGER.error("执行HTTP Get请求时,发生异常!", e);
} catch (IllegalArgumentException e) {
LOGGER.error("执行HTTP Get请求时,发生异常!", e);
} catch (IOException e) {
LOGGER.error("执行HTTP Get请求时,发生异常!", e);
} finally {
if (method != null) {
method.releaseConnection();
}
}
return list;
}
b 搜索范围 经纬度
size 返回记录条数
public List<CompanyVo> searchPOIByBaiduMap(@RequestParam(value = "name", defaultValue = "") String name, @RequestParam(value = "size", defaultValue = "0") int size,
@RequestParam(value = "b", defaultValue = "") String b) {
List<CompanyVo> list = new ArrayList<CompanyVo>();
HttpMethod method = null;
try {
StringBuilder urlBuilder = new StringBuilder();
urlBuilder.append("http://map.baidu.com/?newmap=1&reqflag=pcmap&biz=1&from=webmap&qt=s&da_src=pcmappg.searchBox.sugg&wd=");
urlBuilder.append(URLEncoder.encode(name, "utf-8"));
urlBuilder.append("&c=179&sug=1&b=(");
urlBuilder.append(b);
urlBuilder.append(")&from=webmap&tn=B_NORMAL_MAP&nn=0&t=");
urlBuilder.append(new Date().getTime());
StringBuffer response = new StringBuffer();
HttpClient client = new HttpClient();
method = new GetMethod(urlBuilder.toString());
client.getHttpConnectionManager().getParams().setConnectionTimeout(3000);
client.executeMethod(method);
if (method.getStatusCode() == HttpStatus.SC_OK) {
BufferedReader reader = new BufferedReader(new InputStreamReader(method.getResponseBodyAsStream(), "utf-8"));
String line;
while ((line = reader.readLine()) != null) {
response.append(line);
}
reader.close();
JSONObject result = JSONObject.fromObject(response.toString());
JSONArray content = (JSONArray) result.get("content");
int searchSize = size;
if(size > content.size()){
searchSize = content.size();
}
for (int i = 0; i < searchSize; i++) {
JSONObject obj = (JSONObject) content.get(i);
// id,name,code,address,longitude,latitude
String addr = "";
if (obj.containsKey("addr")) {
addr = obj.getString("addr");
}
CompanyVo vo = new CompanyVo(null, obj.getString("name"), "", addr, String.valueOf((Float.parseFloat(obj.getString("x")) * 0.01f)), String.valueOf((Float.parseFloat(obj
.getString("y")) * 0.01f)));
vo.setType("baidu");
list.add(vo);
}
}
} catch (URIException e) {
LOGGER.error("执行HTTP Get请求时,编码查询字符串“" + name + "”发生异常!", e);
} catch (HttpException e) {
LOGGER.error("执行HTTP Get请求时,发生异常!", e);
} catch (IllegalArgumentException e) {
LOGGER.error("执行HTTP Get请求时,发生异常!", e);
} catch (IOException e) {
LOGGER.error("执行HTTP Get请求时,发生异常!", e);
} finally {
if (method != null) {
method.releaseConnection();
}
}
return list;
}
$("#searchCompany").click(function(){ //清空ul子节点 $("#searchResult").empty(); var h3=document.getElementById("h3"); var company=document.getElementById("companyName"); var ul=document.getElementById("searchResult"); //companyName为空 弹出警告 if(company.value=="") { openDialogHelper.getOpenPageDialog().error("污染源不能为空"); return; } $.ajax({ url:"${contextPath}/load/ajax/searchCompany.do", async:false, type:'post', dataType:'json', data:{ name:company.value, size:"0", b:"13181393.38,3375169.77;13419217.38,3566145.77",//百度地图搜索范围(全杭州) url:"${arcgis}/arcgis/rest/services/fpi/hangzhouThemeFind/MapServer/find?contains=true&searchFields=Name&sr=4326&layers=1%2C2%2C3%2C4%2C5%2C6%2C7%2C8%2C9%2C10%2C11%2C12%2C13%2C14%2C15&returnGeometry=false&f=json" }, success: function (data) { data = setFlashDatas(data); h3.innerHTML='地图搜索 "'+company.value+'" ,共有<label style="color:rgb(0, 114, 198);">'+data.length+"</label>个符合条件的结果:"; for(var i=0;i<data.length;i++) { var $li=$('<li id="li_'+i+'">'+ '<a href="#" class="searchResult" onclick="passValue('+i+');"><div class="class1">'+data[i].name+'</div><div class="class2">地点:'+data[i].address+"</div></a></li>"); $("#searchResult").append($li); $("li").data("data"+i,data[i]); //resetLocate(data); } } }); });
相关文章推荐
- Java HttpClient 4.3.1 访问ASP.NET WebService
- HttpClient 通过域名访问请求接口出现java.net.UnknownHostException解决方法
- java httpclient访问某些网页报403错误
- crawler_java应用集锦9:httpclient4.2.2的几个常用方法,登录之后访问页面问题,下载文件_设置代理
- java httpClient使用代理实现外网访问
- java应用集锦9:httpclient4.2.2的几个常用方法,登录之后访问页面问题,下载文件
- Use java.net.HttpURLConnection/HttpClient 访问web service ( HTTP/HTTPS)
- Java 程序(httpclient) 访问https保护的网站
- 如何用java代码访问远程web服务器(手写一个自己的httpClient)
- 使用Java HttpClient访问淘宝Ip查询接口获取具体位置信息
- Java访问https接口实现(JDK/Httpclient4)
- HttpClient 通过域名访问请求接口出现java.net.UnknownHostException解决方法
- java httpclient访问某些网页报403错误
- java 访问 Wcf利用 HttpClient
- java httpclient 无证书访问 https
- java程序访问不可信(自颁发证书)ssl http 资源
- sun.net.ftp.FtpClient(java访问/操作ftp)
- HttpClient4基础1--通过匿名代理访问网页
- java3: HttpClient, post乱码问题
- java2: HttpClient,实现登录,请求等操作,session保持