最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

nodejs根據(jù)ip數(shù)組在百度地圖中進(jìn)行定位

 更新時(shí)間:2017年03月06日 15:17:20   作者:Glitter_galaxy  
本文主要介紹了nodejs根據(jù)ip數(shù)組在百度地圖中進(jìn)行定位的方法,具有很好的參考價(jià)值。下面跟著小編一起來(lái)看下吧

利用node接收到的ip數(shù)組組裝url后對(duì)百度地圖api發(fā)送請(qǐng)求并返回請(qǐng)求結(jié)果數(shù)組給前端

1. 前端代碼部分(jquery)

重要步驟:

1> 引用百度地圖

2> 實(shí)例化百度地圖,添加相關(guān)縮放控件,設(shè)置主圖

3> 重寫http請(qǐng)求,設(shè)置contentType并對(duì)請(qǐng)求數(shù)據(jù)作轉(zhuǎn)化為json對(duì)象處理

4> 發(fā)送請(qǐng)求數(shù)據(jù),將請(qǐng)求結(jié)果轉(zhuǎn)化成可處理對(duì)象

5> 根據(jù)響應(yīng)結(jié)果的經(jīng)緯度進(jìn)行定位,添加默認(rèn)覆蓋物和iplabel

<script type="text/javascript" src="http://api.map.baidu.com/api?v=2.0&ak=OxLYdFmu3YS1haMUcaBmGMBK0P7PbOqb"></script>
<body>
<div>
<input type="text" id="ipAddress"/>
</div>
<div id="allmap"></div>
</body> 
</html>
<script type="text/javascript">
var map = new BMap.Map("allmap");
// var point = new BMap.Point(116.331398,39.897445);
// map.centerAndZoom(point,12);
map.addControl(new BMap.NavigationControl()); // 添加平移縮放控件
map.addControl(new BMap.ScaleControl()); // 添加比例尺控件
map.addControl(new BMap.OverviewMapControl()); //添加縮略地圖控件
map.enableScrollWheelZoom(); //啟用滾輪放大縮小
map.addControl(new BMap.MapTypeControl()); //添加地圖類型控件
map.setMapStyle({style:'midnight'});
function http(url,method,dataObj){
var formdata = JSON.stringify(dataObj);
//異步操作
var defer = $.Deferred(); 
//發(fā)送
$.ajax({
url : url,
type : method,
data : formdata,
contentType:'application/json; charset=utf-8',
success : function(data){
defer.resolve(data);//執(zhí)行狀態(tài)從"未完成"改為"已完成"
},
error : function(data){
defer.reject(data);
}
});
return defer.promise();
}
//根據(jù)ip數(shù)組獲取位置數(shù)組
var arr = ['112.18.17.7','112.118.17.7'];
var locationArr = [];
getLocate();
function getLocate(){ 
http('http://127.0.0.1:8081/map','post',arr).then(function(data){
for (var i = 0; i < data.length; i++) {
var temp = JSON.parse(data[i]);
var obj = {
'ip': arr[i],
'x': temp.content.point.x,
'y': temp.content.point.y,
}
locationArr.push(obj);
} 
//添加標(biāo)注
addMarker();
});
}
//根據(jù)ip獲取位置
// function getLocate(){ 
// http('http://127.0.0.1:8081/map','post',{'ip':'112.13.41.2'}).then(function(data){
// console.log(data);
// var obj = {
// 'ip': '115.3.4.2',
// 'x': data.content.point.x,
// 'y': data.content.point.y,
// }; 
// //添加標(biāo)注
// addMarker(obj);
// });
// }
// 創(chuàng)建多個(gè)標(biāo)注
function addMarker(){
for (var i = 0; i < locationArr.length; i ++) {
var temp = locationArr[i];
var point = new BMap.Point(temp.x, temp.y);
map.centerAndZoom(point,8);
var marker = new BMap.Marker(point);
map.addOverlay(marker);
var label = new BMap.Label(temp.ip,{offset:new BMap.Size(20,-10)});
marker.setLabel(label);
}
}
//創(chuàng)建一個(gè)標(biāo)注
// function addMarker(temp){
// console.log(temp.x);
// var point = new BMap.Point(temp.x, temp.y);
// map.centerAndZoom(point,12);
// var marker = new BMap.Marker(point);
// map.addOverlay(marker);
// var label = new BMap.Label(temp.ip,{offset:new BMap.Size(20,-10)});
// marker.setLabel(label);
// }
</script>

2. 后端代碼(nodejs)

步驟:

1> 引入http模塊,express模塊,body-parser模塊

2> 設(shè)置允許跨域請(qǐng)求和請(qǐng)求響應(yīng)的數(shù)據(jù)類型

3>設(shè)置接口請(qǐng)求回調(diào)函數(shù)

4>請(qǐng)求回調(diào)函數(shù)中,取到獲取的數(shù)據(jù)并遍歷,向百度api發(fā)起請(qǐng)求

5>獲取到百度的響應(yīng)數(shù)據(jù)后push進(jìn)數(shù)組,并對(duì)前端請(qǐng)求作出響應(yīng)

var http = require('http');
var express = require('express');
var app = express(); //實(shí)例化
var key = 'OxLYdFmu3YS1haMUcaBmGMBK0P7PbOqb'; //百度api的key
var bodyParser = require('body-parser');
// 創(chuàng)建 application/x-www-form-urlencoded 編碼解析
// var urlencodedParser = bodyParser.urlencoded({ extended: false })
app.use(bodyParser.json()); //json編碼
//設(shè)置跨域訪問(wèn)
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請(qǐng)求,url/map
app.post('/map',function(req,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' 
}; 
// 向遠(yuǎn)程服務(wù)器端發(fā)送請(qǐng)求
var getLocation = http.request(options, function(response){
response.on('data', function(data) {
tree += data;
result.push(tree); 
//避免緩存
tree = ''; 
}); 
}); 
getLocation.end(); 
}
//延后發(fā)送請(qǐng)求響應(yīng)
setTimeout(function(){
res.status(200).send(result);
}, 500);
})
//監(jiān)聽(tīng)8081接口打印請(qǐng)求域名和端口
var server = app.listen(8081, function () {
var host = server.address().address
var port = server.address().port
console.log("應(yīng)用實(shí)例,訪問(wèn)地址為 http://%s:%s", host, port)
})

以上就是本文的全部?jī)?nèi)容,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作能帶來(lái)一定的幫助,同時(shí)也希望多多支持腳本之家!

相關(guān)文章

  • Node.js折騰記一:讀指定文件夾,輸出該文件夾的文件樹(shù)詳解

    Node.js折騰記一:讀指定文件夾,輸出該文件夾的文件樹(shù)詳解

    這篇文章主要介紹了Node.js讀指定文件夾輸出該文件夾文件樹(shù),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-04-04
  • Node.js 使用 Express-Jwt和JsonWebToken 進(jìn)行Token身份驗(yàn)證的操作方法

    Node.js 使用 Express-Jwt和JsonWebToken 進(jìn)行Token身份

    這篇文章主要介紹了Node.js 使用 Express-Jwt和JsonWebToken 進(jìn)行Token身份驗(yàn)證的操作方法,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),感興趣的朋友跟隨小編一起看看吧
    2024-08-08
  • Node.js中常用設(shè)計(jì)模式的使用方法總結(jié)

    Node.js中常用設(shè)計(jì)模式的使用方法總結(jié)

    設(shè)計(jì)模式是由經(jīng)驗(yàn)豐富的程序員在日積月累中抽象出的用以解決通用問(wèn)題的可復(fù)用解決方案,它提供了標(biāo)準(zhǔn)化的代碼設(shè)計(jì)方案提升開(kāi)發(fā)體驗(yàn),本文主要來(lái)和大家討論一下Node.js中設(shè)計(jì)模式的重要性并提供一些代碼示例,感興趣的可以了解下
    2023-10-10
  • 基于Node.js和Socket.IO實(shí)現(xiàn)實(shí)時(shí)通信功能

    基于Node.js和Socket.IO實(shí)現(xiàn)實(shí)時(shí)通信功能

    在現(xiàn)代網(wǎng)絡(luò)應(yīng)用中,實(shí)時(shí)通信變得越來(lái)越重要,Node.js,作為一個(gè)JavaScript運(yùn)行環(huán)境,而Socket.IO則為Node.js提供了一個(gè)強(qiáng)大的實(shí)時(shí)通信庫(kù),本文將通過(guò)一個(gè)簡(jiǎn)單的示例,展示如何使用Node.js和Socket.IO創(chuàng)建一個(gè)能夠?qū)崿F(xiàn)實(shí)時(shí)通信的服務(wù)器,需要的朋友可以參考下
    2024-11-11
  • 簡(jiǎn)單了解小程序+node梳理登陸流程

    簡(jiǎn)單了解小程序+node梳理登陸流程

    這篇文章主要介紹了簡(jiǎn)單了解小程序+node梳理登陸流程,以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,,需要的朋友可以參考下
    2019-06-06
  • nodejs log4js 使用詳解

    nodejs log4js 使用詳解

    這篇文章主要介紹了nodejs log4js 使用詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-05-05
  • NodeJS之優(yōu)缺點(diǎn)及適用場(chǎng)景討論

    NodeJS之優(yōu)缺點(diǎn)及適用場(chǎng)景討論

    這篇文章主要介紹了NodeJS之優(yōu)缺點(diǎn)及適用場(chǎng)景討論,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-10-10
  • 基于游標(biāo)的分頁(yè)接口實(shí)現(xiàn)代碼示例

    基于游標(biāo)的分頁(yè)接口實(shí)現(xiàn)代碼示例

    這篇文章主要給大家介紹了關(guān)于基于游標(biāo)的分頁(yè)接口實(shí)現(xiàn)的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2018-11-11
  • node.js中的fs.fsync方法使用說(shuō)明

    node.js中的fs.fsync方法使用說(shuō)明

    這篇文章主要介紹了node.js中的fs.fsync方法使用說(shuō)明,本文介紹了fs.fsync的方法說(shuō)明、語(yǔ)法、接收參數(shù)、使用實(shí)例和實(shí)現(xiàn)源碼,需要的朋友可以參考下
    2014-12-12
  • Node.js assert斷言原理與用法分析

    Node.js assert斷言原理與用法分析

    這篇文章主要介紹了Node.js assert斷言原理與用法,結(jié)合實(shí)例形式分析了assert模塊斷言函數(shù)與使用技巧,需要的朋友可以參考下
    2019-01-01

最新評(píng)論

武山县| 潞西市| 麻栗坡县| 营山县| 元氏县| 务川| 石泉县| 拜城县| 民勤县| 札达县| 那坡县| 独山县| 东至县| 临邑县| 都匀市| 鄯善县| 仁化县| 宁都县| 随州市| 木里| 昂仁县| 百色市| 宁陵县| 和龙市| 兴海县| 湖口县| 车致| 吴川市| 怀安县| 崇州市| 赣州市| 岗巴县| 左云县| 尖扎县| 义乌市| 芷江| 玛纳斯县| 来宾市| 民勤县| 青川县| 台湾省|