Showing
3 changed files
with
90 additions
and
78 deletions
... | @@ -3,10 +3,14 @@ var bodyParser = require('body-parser'); | ... | @@ -3,10 +3,14 @@ var bodyParser = require('body-parser'); |
3 | var request = require('request'); | 3 | var request = require('request'); |
4 | var cheerio = require('cheerio'); | 4 | var cheerio = require('cheerio'); |
5 | var app =express(); | 5 | var app =express(); |
6 | +app.set('view engine','ejs'); | ||
7 | +app.set('views','./views') | ||
6 | app.use(express.urlencoded( {extended : false } )); | 8 | app.use(express.urlencoded( {extended : false } )); |
9 | + | ||
7 | app.locals.pretty=true; | 10 | app.locals.pretty=true; |
8 | -app.set('views','./views') | 11 | + |
9 | -app.set('view engine','pug'); | 12 | +// app.set('view engine','pug'); |
13 | + | ||
10 | app.use(express.static('public')); | 14 | app.use(express.static('public')); |
11 | var http = require('http'); | 15 | var http = require('http'); |
12 | var fs = require('fs'); | 16 | var fs = require('fs'); |
... | @@ -26,7 +30,7 @@ app.post('/',function(req,res,next){ | ... | @@ -26,7 +30,7 @@ app.post('/',function(req,res,next){ |
26 | 30 | ||
27 | request($api_url,function(err,response,body){ | 31 | request($api_url,function(err,response,body){ |
28 | if(err) throw err; | 32 | if(err) throw err; |
29 | - | 33 | + // console.log(body); |
30 | //data부분만 추출 | 34 | //data부분만 추출 |
31 | var obj = JSON.parse(body).data; | 35 | var obj = JSON.parse(body).data; |
32 | // console.log(obj); | 36 | // console.log(obj); |
... | @@ -37,25 +41,27 @@ app.post('/',function(req,res,next){ | ... | @@ -37,25 +41,27 @@ app.post('/',function(req,res,next){ |
37 | 41 | ||
38 | // console.log(searchList); | 42 | // console.log(searchList); |
39 | //result라는 변수에 담아 결과 보내기 | 43 | //result라는 변수에 담아 결과 보내기 |
40 | - res.render('main', {result:searchList }); | 44 | + var hey = searchList[0].orgZipaddr.split(','); |
45 | + res.render('index', {result:JSON.stringify(searchList) }); | ||
41 | 46 | ||
42 | }) | 47 | }) |
43 | 48 | ||
44 | }) | 49 | }) |
45 | 50 | ||
46 | app.get('/',function(req,res){ | 51 | app.get('/',function(req,res){ |
47 | - res.writeHead(200, {'Content-Type': 'text/html'}); | 52 | + res.render('index'); |
48 | - fs.readFile('./map/kakaomap.html', null, function(err,data){ | 53 | + // res.writeHead(200, {'Content-Type': 'text/html'}); |
49 | - if(err){ | 54 | + // fs.readFile('./map/kakaomap.html', null, function(err,data){ |
50 | - res.writeHead(404); | 55 | + // if(err){ |
51 | - res.write('error'); | 56 | + // res.writeHead(404); |
52 | - } | 57 | + // res.write('error'); |
53 | - else{ | 58 | + // } |
54 | - console.log('complete!'); | 59 | + // else{ |
55 | - res.write(data); | 60 | + // console.log('complete!'); |
56 | - } | 61 | + // res.write(data); |
57 | - res.end(); | 62 | + // } |
58 | - }); | 63 | + // res.end(); |
64 | + // }); | ||
59 | }) | 65 | }) |
60 | 66 | ||
61 | app.listen(3000,function(){ | 67 | app.listen(3000,function(){ | ... | ... |
... | @@ -12,6 +12,7 @@ | ... | @@ -12,6 +12,7 @@ |
12 | "@google/maps": "^1.1.3", | 12 | "@google/maps": "^1.1.3", |
13 | "body-parser": "^1.19.0", | 13 | "body-parser": "^1.19.0", |
14 | "cheerio": "^1.0.0-rc.9", | 14 | "cheerio": "^1.0.0-rc.9", |
15 | + "ejs": "^3.1.6", | ||
15 | "express": "^4.17.1", | 16 | "express": "^4.17.1", |
16 | "pug": "^3.0.2", | 17 | "pug": "^3.0.2", |
17 | "request": "^2.88.2", | 18 | "request": "^2.88.2", | ... | ... |
... | @@ -6,6 +6,7 @@ | ... | @@ -6,6 +6,7 @@ |
6 | 6 | ||
7 | </head> | 7 | </head> |
8 | <body> | 8 | <body> |
9 | + | ||
9 | <h1>COVID-19 의료기관 검색하기</h1> | 10 | <h1>COVID-19 의료기관 검색하기</h1> |
10 | <form action="/" method="post"> | 11 | <form action="/" method="post"> |
11 | <p> | 12 | <p> |
... | @@ -13,70 +14,74 @@ | ... | @@ -13,70 +14,74 @@ |
13 | <input type="submit"/> | 14 | <input type="submit"/> |
14 | </p> | 15 | </p> |
15 | </form> | 16 | </form> |
16 | -<div id="map" style="width:700px;height:400px;"></div> | ||
17 | - | ||
18 | -<script type="text/javascript" src="https://dapi.kakao.com/v2/maps/sdk.js?appkey=35fccf4b4e2a3179187346f26ed3f988"></script> | ||
19 | -<script> | ||
20 | -var mapContainer = document.getElementById('map'), // 지도를 표시할 div | ||
21 | - mapOption = { | ||
22 | - center: new kakao.maps.LatLng(33.450701, 126.570667), // 지도의 중심좌표 | ||
23 | - level: 3 // 지도의 확대 레벨 | ||
24 | - }; | ||
25 | - | ||
26 | -var map = new kakao.maps.Map(mapContainer, mapOption); // 지도를 생성합니다 | ||
27 | - | ||
28 | -// 마커를 표시할 위치와 내용을 가지고 있는 객체 배열입니다 | ||
29 | -var positions = [ | ||
30 | - { | ||
31 | - content: '<div>카카오</div>', | ||
32 | - latlng: new kakao.maps.LatLng(33.450705, 126.570677) | ||
33 | - }, | ||
34 | - { | ||
35 | - content: '<div>생태연못</div>', | ||
36 | - latlng: new kakao.maps.LatLng(33.450936, 126.569477) | ||
37 | - }, | ||
38 | - { | ||
39 | - content: '<div>텃밭</div>', | ||
40 | - latlng: new kakao.maps.LatLng(33.450879, 126.569940) | ||
41 | - }, | ||
42 | - { | ||
43 | - content: '<div>근린공원</div>', | ||
44 | - latlng: new kakao.maps.LatLng(33.451393, 126.570738) | ||
45 | - } | ||
46 | -]; | ||
47 | - | ||
48 | -for (var i = 0; i < positions.length; i ++) { | ||
49 | - // 마커를 생성합니다 | ||
50 | - var marker = new kakao.maps.Marker({ | ||
51 | - map: map, // 마커를 표시할 지도 | ||
52 | - position: positions[i].latlng // 마커의 위치 | ||
53 | - }); | ||
54 | - | ||
55 | - // 마커에 표시할 인포윈도우를 생성합니다 | ||
56 | - var infowindow = new kakao.maps.InfoWindow({ | ||
57 | - content: positions[i].content // 인포윈도우에 표시할 내용 | ||
58 | - }); | ||
59 | 17 | ||
60 | - // 마커에 mouseover 이벤트와 mouseout 이벤트를 등록합니다 | 18 | + <div id="map" style="width:700px;height:400px;"></div> |
61 | - // 이벤트 리스너로는 클로저를 만들어 등록합니다 | 19 | + <script type="text/javascript" src="https://dapi.kakao.com/v2/maps/sdk.js?appkey=35fccf4b4e2a3179187346f26ed3f988&libraries=services"></script> |
62 | - // for문에서 클로저를 만들어 주지 않으면 마지막 마커에만 이벤트가 등록됩니다 | 20 | + <% if(typeof(result) != "undefined"){ %> |
63 | - kakao.maps.event.addListener(marker, 'mouseover', makeOverListener(map, marker, infowindow)); | 21 | + <script> |
64 | - kakao.maps.event.addListener(marker, 'mouseout', makeOutListener(infowindow)); | 22 | + var mapContainer = document.getElementById('map'), // 지도를 표시할 div |
65 | -} | 23 | + mapOption = { |
24 | + center: new kakao.maps.LatLng(37.596672, 127.051950), // 지도의 중심좌표 | ||
25 | + level: 3 // 지도의 확대 레벨 | ||
26 | + }; | ||
27 | + | ||
28 | + var map = new kakao.maps.Map(mapContainer, mapOption); // 지도를 생성합니다 | ||
29 | + var geocoder = new kakao.maps.services.Geocoder(); | ||
30 | + // 지도 확대 축소를 제어할 수 있는 줌 컨트롤을 생성합니다 | ||
31 | + var zoomControl = new kakao.maps.ZoomControl(); | ||
32 | + map.addControl(zoomControl, kakao.maps.ControlPosition.RIGHT); | ||
33 | + | ||
34 | + var listData = "<%= result %>"; | ||
35 | + listData = listData.replaceAll('"','\"'); | ||
36 | + listData = JSON.parse(listData); | ||
66 | 37 | ||
67 | -// 인포윈도우를 표시하는 클로저를 만드는 함수입니다 | 38 | + console.log(listData); |
68 | -function makeOverListener(map, marker, infowindow) { | 39 | + // console.log(listData[1]); |
69 | - return function() { | 40 | + //입력되는 배열명이 listData로 들어오면 됨. |
70 | - infowindow.open(map, marker); | 41 | + listData.forEach(function(addr, index) { |
71 | - }; | 42 | + var tmpaddr = ((addr.orgZipaddr).split(','))[0]; |
72 | -} | 43 | + console.log(tmpaddr); |
44 | + console.log("h"); | ||
45 | + geocoder.addressSearch(tmpaddr, function(result, status) { | ||
46 | + if (status === kakao.maps.services.Status.OK) { | ||
47 | + var coords = new kakao.maps.LatLng(result[0].y, result[0].x); | ||
73 | 48 | ||
74 | -// 인포윈도우를 닫는 클로저를 만드는 함수입니다 | 49 | + var marker = new kakao.maps.Marker({ |
75 | -function makeOutListener(infowindow) { | 50 | + position: coords, |
76 | - return function() { | 51 | + clickable: true}); |
77 | - infowindow.close(); | 52 | + |
78 | - }; | 53 | + // 마커를 지도에 표시합니다. |
79 | -} | 54 | + marker.setMap(map); |
80 | -</script> | 55 | + |
56 | + // 인포윈도우를 생성합니다 | ||
57 | + var infowindow = new kakao.maps.InfoWindow({ | ||
58 | + content: '<div style="width:150px;text-align:center;padding:6px 0;">' + addr[1] + '</div>', | ||
59 | + removable : true | ||
60 | + }); | ||
61 | + // 마커에 클릭이벤트를 등록합니다 | ||
62 | + kakao.maps.event.addListener(marker, 'click', function() { | ||
63 | + // 마커 위에 인포윈도우를 표시합니다 | ||
64 | + infowindow.open(map, marker); | ||
65 | + }); | ||
66 | + } | ||
67 | + }); | ||
68 | + | ||
69 | + }); | ||
70 | + | ||
71 | + // 인포윈도우를 표시하는 클로저를 만드는 함수입니다 | ||
72 | + function makeOverListener(map, marker, infowindow) { | ||
73 | + return function() { | ||
74 | + infowindow.open(map, marker); | ||
75 | + }; | ||
76 | + } | ||
77 | + | ||
78 | + // 인포윈도우를 닫는 클로저를 만드는 함수입니다 | ||
79 | + function makeOutListener(infowindow) { | ||
80 | + return function() { | ||
81 | + infowindow.close(); | ||
82 | + }; | ||
83 | + } | ||
84 | + </script> | ||
85 | +<% } %> | ||
81 | </body> | 86 | </body> |
82 | </html> | 87 | </html> |
... | \ No newline at end of file | ... | \ No newline at end of file | ... | ... |
-
Please register or login to post a comment