利用node接收到的ip数组组装url后对百度地图api发送请求并返回请求结果数组给前端
1. 前端代码部分(jquery)
重要步骤:
1> 引用百度地图
3> 重写http请求,设置contentType并对请求数据作转化为json对象处理
4> 发送请求数据,将请求结果转化成可处理对象
5> 根据响应结果的经纬度进行定位,添加默认覆盖物和iplabel
@H_404_25@
2. 后端代码(nodejs)
步骤:
1> 引入http模块,express模块,body-parser模块
2> 设置允许跨域请求和请求响应的数据类型
3>设置接口请求回调函数
4>请求回调函数中,取到获取的数据并遍历,向百度api发起请求
5>获取到百度的响应数据后push进数组,并对前端请求作出响应
百度api的key
var bodyParser = require('body-parser');
// 创建 application/x-www-form-urlencoded 编码解析
// var urlencodedParser = bodyParser.urlencoded({ extended: false })
app.use(bodyParser.json()); //json编码
//设置跨域访问
app.all('*',function(req,res,next) {
res.header("Access-Control-Allow-Origin","*");
res.header("Access-Control-Allow-Headers","X-Requested-With,Content-Type");
res.header("Access-Control-Allow-Methods","PUT,POST,GET,DELETE");
res.header("X-Powered-By",' 3.2.1')
res.header("Content-Type","application/json;charset=utf-8");
next();
});
//post请求,url/map
app.post('/map',res){
var ipArr = req.body;
var result = Array();
for (var i = 0; i < ipArr.length; i++) {
var tree = '';
var options = {
hostname: 'api.map.baidu.com',port: 80,path: '/location/ip?ak=' + key + "&coor=bd09ll&ip=" + ipArr[i],method: 'GET'
};
// 向远程服务器端发送请求
var getLocation = http.request(options,function(response){
response.on('data',function(data) {
tree += data;
result.push(tree);
//避免缓存
tree = '';
});
});
getLocation.end();
}
//延后发送请求响应
setTimeout(function(){
res.status(200).send(result);
},500);
})
//监听8081接口打印请求域名和端口
var server = app.listen(8081,function () {
var host = server.address().address
var port = server.address().port
console.log("应用实例,访问地址为 http://%s:%s",host,port)
})