Showing
1 changed file
with
33 additions
and
41 deletions
| 1 | -const express= require('express'); | 1 | +const fetch = require('node-fetch') |
| 2 | -const app = express(); | 2 | +Request = fetch.Request |
| 3 | -var request = require('request'); | ||
| 4 | -const got = require('got'); | ||
| 5 | 3 | ||
| 6 | -//필요한 주소 정보 (data 형식 확정 x ) | 4 | +const addrJson = `{ |
| 7 | -let addresses = `{ | ||
| 8 | "current_address" : { "address" : "현재 위치 주소", "x" : 127.1058342, "y" : 37.359708}, | 5 | "current_address" : { "address" : "현재 위치 주소", "x" : 127.1058342, "y" : 37.359708}, |
| 9 | "number" : 2, | 6 | "number" : 2, |
| 10 | "hospital_data" :[ | 7 | "hospital_data" :[ |
| ... | @@ -13,50 +10,45 @@ let addresses = `{ | ... | @@ -13,50 +10,45 @@ let addresses = `{ |
| 13 | ] | 10 | ] |
| 14 | }` | 11 | }` |
| 15 | 12 | ||
| 16 | -const address = JSON.parse(addresses) | 13 | +const addrData = JSON.parse(addrJson); |
| 17 | 14 | ||
| 18 | -var options = { | 15 | +const ID = '12rhzhzq7g'; |
| 16 | +const KEY = 'FhD45P91TxG2820MadrsiPOUjI6bQMJhddnHZIeI'; | ||
| 17 | + | ||
| 18 | +const data = { | ||
| 19 | + cur: addrData["current_address"], | ||
| 20 | + dist: addrData["hospital_data"].map((e)=> {return {x: e.x, y: e.y}}) | ||
| 21 | +} | ||
| 22 | + | ||
| 23 | +const fetchAPI = async () => { | ||
| 24 | + const baseOption = { | ||
| 19 | 'method': 'GET', | 25 | 'method': 'GET', |
| 20 | - 'url': 'https://naveropenapi.apigw.ntruss.com/map-direction-15/v1/driving?start='+address.current_address.x+',' | ||
| 21 | - +address.current_address.y+'&goal='+address.hospital_data[0].x+','+address.hospital_data[0].y+'&option=trafast', | ||
| 22 | 'headers': { | 26 | 'headers': { |
| 23 | 'X-NCP-APIGW-API-KEY-ID': '12rhzhzq7g', | 27 | 'X-NCP-APIGW-API-KEY-ID': '12rhzhzq7g', |
| 24 | 'X-NCP-APIGW-API-KEY': 'FhD45P91TxG2820MadrsiPOUjI6bQMJhddnHZIeI' | 28 | 'X-NCP-APIGW-API-KEY': 'FhD45P91TxG2820MadrsiPOUjI6bQMJhddnHZIeI' |
| 25 | }, | 29 | }, |
| 26 | -}; | 30 | + }; |
| 27 | 31 | ||
| 28 | -const ID = '12rhzhzq7g'; | 32 | + const promiseList = data.dist.map(async (dist, idx)=> { |
| 29 | -const KEY = 'FhD45P91TxG2820MadrsiPOUjI6bQMJhddnHZIeI'; | 33 | + const url = `https://naveropenapi.apigw.ntruss.com/map-direction-15/v1/driving?start=${data.cur.x},${data.cur.y}&goal=${dist.x},${dist.y}&option=trafast`; |
| 30 | 34 | ||
| 31 | -async function direction(data){ | ||
| 32 | - var num = data.number; | ||
| 33 | - var a = [] | ||
| 34 | - for (let i =0; i<num; i++){ | ||
| 35 | - a.push('https://naveropenapi.apigw.ntruss.com/map-direction-15/v1/driving?start='+data.current_address.x+','+data.current_address.y+'&goal='+data.hospital_data[i].x+','+data.hospital_data[i].y+'&option=trafast') | ||
| 36 | - } | ||
| 37 | - console.log(a) | ||
| 38 | - const PromiseList = a.map(async (e)=> { | ||
| 39 | - const _url = 'https://naveropenapi.apigw.ntruss.com/map-direction-15/v1/driving?start='+data.current_address.x+','+data.current_address.y+'&goal='+data.hospital_data[i].x+','+data.hospital_data[i].y+'&option=trafast'; | ||
| 40 | - options.url = _url; | ||
| 41 | - | ||
| 42 | - return await request(options,function(error, respose){ | ||
| 43 | - console.log("11111111111111111") | ||
| 44 | - var databody = JSON.parse(respose.body); | ||
| 45 | - if (databody.code !=1){ | ||
| 46 | - console.log("2222222222222222") | ||
| 47 | - console.log(databody) | ||
| 48 | - var distance = databody.route.trafast[0].summary.distance/1000; // km 단위 | ||
| 49 | - var duration = databody.route.trafast[0].summary.duration/1000/60; // 분 단위dy | ||
| 50 | - data.hospital_data[i].distance = distance; | ||
| 51 | - console.log(data.hospital_data[i].distance) | ||
| 52 | - data.hospital_data[i].duration = duration;} | ||
| 53 | - }) | ||
| 54 | - }) | ||
| 55 | 35 | ||
| 56 | - const result = await Promise.all(PromiseList) | 36 | + let request = new Request(url, baseOption); |
| 57 | 37 | ||
| 38 | + return fetch(request).then(async res => { | ||
| 39 | + const data = await res.json(); | ||
| 40 | + | ||
| 41 | + const distance = data.route?.trafast[0].summary.distance; | ||
| 42 | + const duration = data.route?.trafast[0].summary.duration; | ||
| 43 | + addrData["hospital_data"][idx].distance = distance; | ||
| 44 | + addrData["hospital_data"][idx].duration = duration; | ||
| 45 | + }); | ||
| 46 | + }) | ||
| 58 | 47 | ||
| 48 | + Promise.all(promiseList).then(()=> { | ||
| 49 | + console.log("fetch end"); | ||
| 50 | + console.log(addrData); | ||
| 51 | + }); | ||
| 52 | +} | ||
| 59 | 53 | ||
| 60 | - console.log(result) | ||
| 61 | - return result} | ||
| 62 | -console.log(direction(address)) | ||
| ... | \ No newline at end of file | ... | \ No newline at end of file |
| 54 | +fetchAPI(); | ||
| ... | \ No newline at end of file | ... | \ No newline at end of file | ... | ... |
-
Please register or login to post a comment