김서연

지도 띄우는 방법 추가수정

1 -## Topic 1 +[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
2 -> 코로나 19 예방접종 의료기관 조회 웹서비스를 제공하는 프로젝트입니다. 2 +
3 +## 🔍 About the Project
4 +> 현재 코로나19로 인해 얼마전부터 위탁의료기관을 통한 신종 코로나바이러스 감염증(코로나19) 접종이 본격 시작되었습니다.
5 +이에 따라, 원하는 지역의 예방접종 위탁의료기관을 간편하게 조회할 수 있는 서비스를 개발하였습니다.
6 +이 프로젝트는 매 정각 1번씩 갱신되고 있는 위탁의료기관의 정보 데이터를 기반으로 제공합니다.
7 +
8 +## 💻 User Interface
9 +<img src="/uploads/c003a2a8d20b368d3c0fb07c49007251/UI예시.png" width="800" height="400">
10 +
11 +
12 +## 📋 기술 스택
13 +- Nodejs
14 +- Html
15 +- Css
16 +- JavaScript
17 +- Express
18 +- AWS EC2
3 19
4 -## Member 20 +
21 +## ✏️ 프로젝트 사용 방법
22 +1. cloning
23 +```
24 +http://khuhub.khu.ac.kr/2018103585/Corona_Vaccination_Medical_Institution.git
25 +```
26 +
27 +2. install npm packages
28 +```
29 +npm install
30 +```
31 +3. add API key
32 +> Fill {} with API Key
33 +```
34 +const $key = '{Corona Vaccination Medical Institution API key}' (app.js)
35 +```
36 +```
37 +<script type="text/javascript" src="https://dapi.kakao.com/v2/maps/sdk.js?appkey={Kakao map API Key}&libraries=services"></script> (index.ejs)
38 +```
39 +4. Execute
40 +```
41 +node app.js
42 +```
43 +
44 +## 💻 Project Architecture
45 +<img src="/uploads/abc7fb1cd4ee2ab997956e529c24670e/프로젝트아키텍쳐.png" width="800" height="400">
46 +
47 +
48 +
49 +## ✨ Contributors
50 +
5 | 김서연 | 허재경 | 51 | 김서연 | 허재경 |
6 | :----: | :----: | 52 | :----: | :----: |
7 | [@ksy991018](https://github.com/ksy991018) | [@JaeKyungHeo](https://github.com/JaeKyungHeo) | 53 | [@ksy991018](https://github.com/ksy991018) | [@JaeKyungHeo](https://github.com/JaeKyungHeo) |
......
...@@ -24,18 +24,14 @@ app.post('/',function(req,res,next){ ...@@ -24,18 +24,14 @@ app.post('/',function(req,res,next){
24 24
25 request($api_url,function(err,response,body){ 25 request($api_url,function(err,response,body){
26 if(err) throw err; 26 if(err) throw err;
27 - // console.log(body);
28 //data부분만 추출 27 //data부분만 추출
29 var obj = JSON.parse(body).data; 28 var obj = JSON.parse(body).data;
30 - // console.log(obj);
31 //검색한 지역 포함한 모든 data 담기 29 //검색한 지역 포함한 모든 data 담기
32 let searchList = obj.filter(searchList => { 30 let searchList = obj.filter(searchList => {
33 return searchList.orgZipaddr.includes(searchWord); 31 return searchList.orgZipaddr.includes(searchWord);
34 }); 32 });
35 33
36 - // console.log(searchList);
37 //result라는 변수에 담아 결과 보내기 34 //result라는 변수에 담아 결과 보내기
38 - // var hey = searchList[0].orgZipaddr.split(',');
39 var timeList=[]; 35 var timeList=[];
40 for(var i=0; i<searchList.length; i++){ //시간정보 파싱 36 for(var i=0; i<searchList.length; i++){ //시간정보 파싱
41 var eachtime=[]; 37 var eachtime=[];
...@@ -77,9 +73,7 @@ app.post('/',function(req,res,next){ ...@@ -77,9 +73,7 @@ app.post('/',function(req,res,next){
77 73
78 } 74 }
79 res.render('index', {result:JSON.stringify(searchList),info:searchList ,timeList:timeList}); 75 res.render('index', {result:JSON.stringify(searchList),info:searchList ,timeList:timeList});
80 -
81 }) 76 })
82 -
83 }) 77 })
84 78
85 app.get('/',function(req,res){ 79 app.get('/',function(req,res){
...@@ -90,3 +84,5 @@ app.listen(3000,function(){ ...@@ -90,3 +84,5 @@ app.listen(3000,function(){
90 console.log('Connected 3000 port!'); 84 console.log('Connected 3000 port!');
91 }); 85 });
92 86
87 +
88 +
......
...@@ -3,7 +3,6 @@ ...@@ -3,7 +3,6 @@
3 <head> 3 <head>
4 <meta charset="utf-8"> 4 <meta charset="utf-8">
5 <title>코로나 백신 의료기관 조회</title> 5 <title>코로나 백신 의료기관 조회</title>
6 -
7 <%if(typeof(info)!="undefined"){%> 6 <%if(typeof(info)!="undefined"){%>
8 <script> 7 <script>
9 try { 8 try {
...@@ -18,7 +17,8 @@ ...@@ -18,7 +17,8 @@
18 </head> 17 </head>
19 <body> 18 <body>
20 <center> 19 <center>
21 - <h1 style="font-family:verdana;font-weight:bold; ">COVID-19 예방접종 위탁 의료기관 조회</h1> <hr> 20 + <h1 style="font-family:verdana;">COVID-19 예방접종 위탁 의료기관 조회</h1> <hr>
21 +
22 <form action="/" method="post"> 22 <form action="/" method="post">
23 <p> 23 <p>
24 <div style="float:right; width:40%; margin-bottom:10px; margin-right: 5px;"> 24 <div style="float:right; width:40%; margin-bottom:10px; margin-right: 5px;">
...@@ -28,11 +28,10 @@ ...@@ -28,11 +28,10 @@
28 </p> 28 </p>
29 </form> 29 </form>
30 </center> 30 </center>
31 -
32 - <script type="text/javascript" src="https://dapi.kakao.com/v2/maps/sdk.js?appkey=35fccf4b4e2a3179187346f26ed3f988&libraries=services"></script>
33 31
34 - <% if(typeof(info) != "undefined"){ %> 32 + <script type="text/javascript" src="https://dapi.kakao.com/v2/maps/sdk.js?appkey=35fccf4b4e2a3179187346f26ed3f988&libraries=services"></script>
35 - <div id="map" style="width:65%;height:550px;float:left; margin-left: 2%; border-radius: 2%; border:1px solid black" ></div> 33 + <% if(typeof(info) != "undefined"){ %>
34 + <div id="map" style="width:65%;height:550px;float:left; margin-left: 2%; border-radius: 2%; border:1px solid black" ></div>
36 <div style="overflow:scroll; width:25%; height:550px;float:left; margin-left:2%; border:1px solid black;"> 35 <div style="overflow:scroll; width:25%; height:550px;float:left; margin-left:2%; border:1px solid black;">
37 <ol id="placelist"> 36 <ol id="placelist">
38 <% for(i=0; i<info.length; i++){%> 37 <% for(i=0; i<info.length; i++){%>
...@@ -44,7 +43,6 @@ ...@@ -44,7 +43,6 @@
44 <%}else { %> 43 <%}else { %>
45 <span style="color:green"> (정상운영) </span> 44 <span style="color:green"> (정상운영) </span>
46 <%}%> 45 <%}%>
47 -
48 <br> 46 <br>
49 <% if(timeList[i][0]!="" && timeList[i][1]!="" && timeList[i][2]!="" && timeList[i][3]!=""){%> 47 <% if(timeList[i][0]!="" && timeList[i][1]!="" && timeList[i][2]!="" && timeList[i][3]!=""){%>
50 <span>점심시간 : <%=timeList[i][0]%>:<%=timeList[i][1]%>~<%=timeList[i][2]%>:<%=timeList[i][3] %></span><br> 48 <span>점심시간 : <%=timeList[i][0]%>:<%=timeList[i][1]%>~<%=timeList[i][2]%>:<%=timeList[i][3] %></span><br>
...@@ -60,14 +58,14 @@ ...@@ -60,14 +58,14 @@
60 <%} %> 58 <%} %>
61 </ol> 59 </ol>
62 </div> 60 </div>
63 - <%} %> 61 + <%}%>
64 62
65 <% if(typeof(result) != "undefined"){ %> 63 <% if(typeof(result) != "undefined"){ %>
66 <script> 64 <script>
67 var mapContainer = document.getElementById('map'), // 지도를 표시할 div 65 var mapContainer = document.getElementById('map'), // 지도를 표시할 div
68 mapOption = { 66 mapOption = {
69 center: new kakao.maps.LatLng(37.596672, 127.051950), // 지도의 중심좌표 67 center: new kakao.maps.LatLng(37.596672, 127.051950), // 지도의 중심좌표
70 - level: 2 // 지도의 확대 레벨 68 + level: 3 // 지도의 확대 레벨
71 }; 69 };
72 70
73 var map = new kakao.maps.Map(mapContainer, mapOption); // 지도를 생성합니다 71 var map = new kakao.maps.Map(mapContainer, mapOption); // 지도를 생성합니다
...@@ -81,7 +79,6 @@ ...@@ -81,7 +79,6 @@
81 listData = JSON.parse(listData); 79 listData = JSON.parse(listData);
82 80
83 var count = 0; 81 var count = 0;
84 -
85 //입력되는 배열명이 listData로 들어오면 됨. 82 //입력되는 배열명이 listData로 들어오면 됨.
86 listData.forEach(function(addr, index) { 83 listData.forEach(function(addr, index) {
87 var tmpaddr = ((addr.orgZipaddr).split(','))[0]; 84 var tmpaddr = ((addr.orgZipaddr).split(','))[0];
...@@ -91,7 +88,6 @@ ...@@ -91,7 +88,6 @@
91 var coords = new kakao.maps.LatLng(result[0].y, result[0].x); 88 var coords = new kakao.maps.LatLng(result[0].y, result[0].x);
92 89
93 count += 1; 90 count += 1;
94 -
95 var marker = new kakao.maps.Marker({ 91 var marker = new kakao.maps.Marker({
96 position: coords, 92 position: coords,
97 clickable: true 93 clickable: true
...@@ -128,7 +124,6 @@ ...@@ -128,7 +124,6 @@
128 infowindow.close(); 124 infowindow.close();
129 }; 125 };
130 } 126 }
131 -
132 var infowindows = []; 127 var infowindows = [];
133 function displayinfowindow(address,name,flag){ 128 function displayinfowindow(address,name,flag){
134 if(flag){ 129 if(flag){
...@@ -136,7 +131,7 @@ ...@@ -136,7 +131,7 @@
136 geocoder.addressSearch(tmpaddr, function(result, status) { 131 geocoder.addressSearch(tmpaddr, function(result, status) {
137 if (status === kakao.maps.services.Status.OK) { 132 if (status === kakao.maps.services.Status.OK) {
138 var coords = new kakao.maps.LatLng(result[0].y, result[0].x); 133 var coords = new kakao.maps.LatLng(result[0].y, result[0].x);
139 - map.setCenter(coords); 134 + map.setCenter(coords);//인포윈도우 생성 마커로 이동
140 var marker = new kakao.maps.Marker({ 135 var marker = new kakao.maps.Marker({
141 position: coords, 136 position: coords,
142 clickable: true 137 clickable: true
...@@ -156,6 +151,18 @@ ...@@ -156,6 +151,18 @@
156 } 151 }
157 } 152 }
158 </script> 153 </script>
154 +<% }else{ %>
155 + <div id="map" style="width:90%;height:550px;float:left; margin-left: 2%; border-radius: 2%; border:1px solid black" ></div>
156 + <script>//입력 값이 없을 때 기본 지도 띄움
157 + var mapContainer = document.getElementById('map'), // 지도를 표시할 div
158 + mapOption = {
159 + center: new kakao.maps.LatLng(37.596672, 127.051950), // 지도의 중심좌표
160 + level: 3 // 지도의 확대 레벨
161 + };
162 +
163 + var map = new kakao.maps.Map(mapContainer, mapOption); // 지도를 생성합니다
164 + </script>
165 +
159 <% } %> 166 <% } %>
160 </body> 167 </body>
161 </html> 168 </html>
...\ No newline at end of file ...\ No newline at end of file
......