利用node接收到的ip数组组装url后对百度地图api发送请求并返回请求结果数组给前端
1. 前端代码部分(jquery)
重要步骤:
1> 引用百度地图
3> 重写http请求,设置contentType并对请求数据作转化为json对象处理
4> 发送请求数据,将请求结果转化成可处理对象
5> 根据响应结果的经纬度进行定位,添加默认覆盖物和iplabel
rush:xhtml;">
2. 后端代码(nodejs)
步骤:
1> 引入http模块,express模块,body-parser模块
2> 设置允许跨域请求和请求响应的数据类型
3>设置接口请求回调函数
4>请求回调函数中,取到获取的数据并遍历,向百度api发起请求
5>获取到百度的响应数据后push进数组,并对前端请求作出响应
rush:js;">
var http = require('http');
var express = require('express');
var app = express(); //实例化
var key = 'OxLYdFmu3YS1haMUcaBmGMBK0P7PbOqb'; //百度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)
})
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持编程之家!
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。