Heo

예외처리

...@@ -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('&#34;','\"');
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
......