您的位置:首页 > 理论基础 > 计算机网络

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;
}
$("#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);
}
}
});
});
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: