Showing
6 changed files
with
78 additions
and
107 deletions
kakao/kakaomap.html
deleted
100644 → 0
1 | -<!DOCTYPE html> | ||
2 | -<html lang="en"> | ||
3 | - | ||
4 | -<head> | ||
5 | - <meta charset="UTR-8" /> | ||
6 | - <meta http-equiv="X-UA-Compatible" content="IE=edge" /> | ||
7 | - <meta name="viewport" content="width=device-width, initial-scale=1.0" /> | ||
8 | - <title>HomePurchaseAgePrediction</title> | ||
9 | - <link rel="stylesheet" href="css/style2.css" /> | ||
10 | - <link rel="preconnect" href="https://fonts.gstatic.com" /> | ||
11 | - <link href="https://fonts.googleapis.com/css2?family=Noto+Sans+KR:wght@300;500;700;900&display=swap" | ||
12 | - rel="stylesheet" /> | ||
13 | -</head> | ||
14 | - | ||
15 | -<body> | ||
16 | - <nav> | ||
17 | - <h1 onClick="location.href='/'">Home Purchase Age Prediction</h1> | ||
18 | - </nav> | ||
19 | - <main> | ||
20 | - <div id="info"></div> | ||
21 | - <div id="home_info"> | ||
22 | - <div id="map"></div> | ||
23 | - <ul id="house_list"> | ||
24 | - <div>LIST</div> | ||
25 | - </ul> | ||
26 | - </div> | ||
27 | - </main> | ||
28 | - <script type="text/javascript" | ||
29 | - src="//dapi.kakao.com/v2/maps/sdk.js?appkey=17cbb7795b615d8f1f0595f972e26c0f&libraries=services,clusterer,drawing"></script> | ||
30 | - <script type="text/javascript" src="../js/next_page.js"></script> | ||
31 | -</body> | ||
32 | - | ||
33 | -</html> | ||
... | \ No newline at end of file | ... | \ No newline at end of file |
1 | <!DOCTYPE html> | 1 | <!DOCTYPE html> |
2 | <html lang="en"> | 2 | <html lang="en"> |
3 | - <head> | 3 | + |
4 | - <meta charset="UTF-8" /> | 4 | +<head> |
5 | - <meta http-equiv="X-UA-Compatible" content="IE=edge" /> | 5 | + <meta charset="UTF-8" /> |
6 | - <meta name="viewport" content="width=device-width, initial-scale=1.0" /> | 6 | + <meta http-equiv="X-UA-Compatible" content="IE=edge" /> |
7 | - <title>HomePurchaseAgePrediction</title> | 7 | + <meta name="viewport" content="width=device-width, initial-scale=1.0" /> |
8 | - <link rel="stylesheet" href="css/style.css" /> | 8 | + <title>HomePurchaseAgePrediction</title> |
9 | - <link rel="preconnect" href="https://fonts.gstatic.com" /> | 9 | + <link rel="stylesheet" href="css/style.css" /> |
10 | - <link | 10 | + <link rel="preconnect" href="https://fonts.gstatic.com" /> |
11 | - href="https://fonts.googleapis.com/css2?family=Noto+Sans+KR:wght@300;500;700;900&display=swap" | 11 | + <link href="https://fonts.googleapis.com/css2?family=Noto+Sans+KR:wght@300;500;700;900&display=swap" |
12 | - rel="stylesheet" | 12 | + rel="stylesheet" /> |
13 | - /> | 13 | +</head> |
14 | - </head> | 14 | + |
15 | - <body> | 15 | +<body> |
16 | - <main> | 16 | + <main> |
17 | - <h1 onClick="location.href='/'"">Home Purchase Age Prediction</h1> | 17 | + <h1 onClick="location.href='/'"">Home Purchase Age Prediction</h1> |
18 | <h4> | 18 | <h4> |
19 | 사용자의 위치기반으로 집 구매 시기를 예측해드립니다 (사용자 위치 근처의 | 19 | 사용자의 위치기반으로 집 구매 시기를 예측해드립니다 (사용자 위치 근처의 |
20 | 집을 찾아드립니다) | 20 | 집을 찾아드립니다) |
21 | </h4> | 21 | </h4> |
22 | - <form action="/geolocation" method="GET" onsubmit="return jbSubmit()"> | 22 | + <form action=" /geolocation" method="GET" onsubmit="return jbSubmit()"> |
23 | - <div> | 23 | + <div> |
24 | - 월소득(단위:만 원) | 24 | + 월소득(단위:만 원) |
25 | - <input | 25 | + <input type="text" id="salary" name="salary" placeholder="월소득을 숫자로 입력해주세요." /> |
26 | - type="text" | 26 | + </div> |
27 | - id="salary" | 27 | + <div> |
28 | - name="salary" | 28 | + 지출(단위:만 원) |
29 | - placeholder="월소득을 숫자로 입력해주세요." | 29 | + <input type="text" id="expenditure" name="expenditure" placeholder="지출을 숫자로 입력해주세요." /> |
30 | - /> | 30 | + </div> |
31 | - </div> | 31 | + <div> |
32 | - <div> | 32 | + 거주지역 (ex 강원도 강릉시 견소동) |
33 | - 지출(단위:만 원) | 33 | + <input type="text" id="address" name="address" placeholder="(도/시/구/동)을 입력해주세요." /> |
34 | - <input | 34 | + </div> |
35 | - type="text" | 35 | + <div> |
36 | - id="expenditure" | 36 | + <input class="btn" type="submit" value="SUBMIT" /> |
37 | - name="expenditure" | 37 | + </div> |
38 | - placeholder="지출을 숫자로 입력해주세요." | ||
39 | - /> | ||
40 | - </div> | ||
41 | - <div> | ||
42 | - 거주지역 | ||
43 | - <input | ||
44 | - type="text" | ||
45 | - id="address" | ||
46 | - name="address" | ||
47 | - placeholder="(도/시/구/동)을 입력해주세요." | ||
48 | - /> | ||
49 | - </div> | ||
50 | - <div> | ||
51 | - <input class="btn" type="submit" value="SUBMIT" /> | ||
52 | - </div> | ||
53 | </form> | 38 | </form> |
54 | - </main> | 39 | + </main> |
55 | - <script type="text/javascript" src="../js/home_page.js"></script> | 40 | + <script type="text/javascript" src="../js/home_page.js"></script> |
56 | - </body> | 41 | +</body> |
57 | -</html> | 42 | + |
43 | +</html> | ||
... | \ No newline at end of file | ... | \ No newline at end of file | ... | ... |
1 | function jbSubmit() { | 1 | function jbSubmit() { |
2 | var salary = Number(document.getElementById("salary").value); | 2 | var salary = Number(document.getElementById("salary").value); |
3 | var expenditure = Number(document.getElementById("expenditure").value); | 3 | var expenditure = Number(document.getElementById("expenditure").value); |
4 | - console.log(salary); | ||
5 | if (salary == "" || expenditure == "") { | 4 | if (salary == "" || expenditure == "") { |
6 | alert("값을 입력하세요!"); | 5 | alert("값을 입력하세요!"); |
7 | return false; | 6 | return false; | ... | ... |
1 | +var jsonData = document.getElementById('jsonData').value; | ||
2 | +var myJsonData = JSON.parse(jsonData); | ||
3 | + | ||
4 | +myJsonData.sort(function (a, b) { | ||
5 | + return a.amount - b.amount; | ||
6 | +}) | ||
7 | + | ||
8 | +newdata = [] | ||
9 | +for (i = 0; i < 5; i++) { | ||
10 | + newdata.push(myJsonData[i]); | ||
11 | +} | ||
12 | + | ||
13 | +priceList = []; | ||
14 | +for (var i = 0; i < 5; i++) { | ||
15 | + priceList.push(newdata[i].amount); | ||
16 | +} | ||
17 | + | ||
1 | var Container = document.getElementById("map"); | 18 | var Container = document.getElementById("map"); |
2 | var Option = { | 19 | var Option = { |
3 | center: new kakao.maps.LatLng(33.450701, 126.570667), | 20 | center: new kakao.maps.LatLng(33.450701, 126.570667), |
... | @@ -28,16 +45,19 @@ if (navigator.geolocation) { | ... | @@ -28,16 +45,19 @@ if (navigator.geolocation) { |
28 | } | 45 | } |
29 | 46 | ||
30 | //db에서 데이터 받아오면 구현할 부분 | 47 | //db에서 데이터 받아오면 구현할 부분 |
31 | -/* | 48 | + |
32 | // 마커를 표시할 위치와 내용을 가지고 있는 객체 배열입니다 | 49 | // 마커를 표시할 위치와 내용을 가지고 있는 객체 배열입니다 |
33 | -var positions = results; | 50 | +var positions = [] |
51 | +for (var i = 0; i < 5; i++) { | ||
52 | + positions.push(newdata[i]); | ||
53 | +} | ||
34 | 54 | ||
35 | // 주소-좌표 변환 객체를 생성합니다 | 55 | // 주소-좌표 변환 객체를 생성합니다 |
36 | var geocoder = new kakao.maps.services.Geocoder(); | 56 | var geocoder = new kakao.maps.services.Geocoder(); |
37 | 57 | ||
38 | -for (var i = 0; i < positions.length; i ++) { | 58 | +for (var i = 0; i < positions.length; i++) { |
39 | // 주소로 좌표를 검색합니다 | 59 | // 주소로 좌표를 검색합니다 |
40 | - geocoder.addressSearch(positions[i].add_address, function(result, status) { | 60 | + geocoder.addressSearch(positions[i].add_adress, function (result, status) { |
41 | // 정상적으로 검색이 완료됐으면 | 61 | // 정상적으로 검색이 완료됐으면 |
42 | if (status === kakao.maps.services.Status.OK) { | 62 | if (status === kakao.maps.services.Status.OK) { |
43 | var coords = new kakao.maps.LatLng(result[0].y, result[0].x); | 63 | var coords = new kakao.maps.LatLng(result[0].y, result[0].x); |
... | @@ -48,31 +68,33 @@ for (var i = 0; i < positions.length; i ++) { | ... | @@ -48,31 +68,33 @@ for (var i = 0; i < positions.length; i ++) { |
48 | }); | 68 | }); |
49 | // 마커에 표시할 인포윈도우를 생성합니다 | 69 | // 마커에 표시할 인포윈도우를 생성합니다 |
50 | var infowindow = new kakao.maps.InfoWindow({ | 70 | var infowindow = new kakao.maps.InfoWindow({ |
51 | - content: positions[i].amount // 인포윈도우에 표시할 내용 | 71 | + content: `<div style="width:150px;text-align:center;padding:6px 0;">${result[0].address.address_name + " " + result[0].road_address.building_name}</div>` |
72 | + // String(priceList[i]) // 인포윈도우에 표시할 내용 | ||
52 | }); | 73 | }); |
74 | + | ||
53 | // 마커에 mouseover 이벤트와 mouseout 이벤트를 등록합니다 | 75 | // 마커에 mouseover 이벤트와 mouseout 이벤트를 등록합니다 |
54 | // 이벤트 리스너로는 클로저를 만들어 등록합니다 | 76 | // 이벤트 리스너로는 클로저를 만들어 등록합니다 |
55 | // for문에서 클로저를 만들어 주지 않으면 마지막 마커에만 이벤트가 등록됩니다 | 77 | // for문에서 클로저를 만들어 주지 않으면 마지막 마커에만 이벤트가 등록됩니다 |
56 | kakao.maps.event.addListener(marker, 'mouseover', makeOverListener(map, marker, infowindow)); | 78 | kakao.maps.event.addListener(marker, 'mouseover', makeOverListener(map, marker, infowindow)); |
57 | kakao.maps.event.addListener(marker, 'mouseout', makeOutListener(infowindow)); | 79 | kakao.maps.event.addListener(marker, 'mouseout', makeOutListener(infowindow)); |
58 | } | 80 | } |
59 | - }); | 81 | + }); |
60 | } | 82 | } |
61 | 83 | ||
62 | // 인포윈도우를 표시하는 클로저를 만드는 함수입니다 | 84 | // 인포윈도우를 표시하는 클로저를 만드는 함수입니다 |
63 | function makeOverListener(map, marker, infowindow) { | 85 | function makeOverListener(map, marker, infowindow) { |
64 | - return function() { | 86 | + return function () { |
65 | - infowindow.open(map, marker); | 87 | + infowindow.open(map, marker); |
66 | }; | 88 | }; |
67 | } | 89 | } |
68 | 90 | ||
69 | // 인포윈도우를 닫는 클로저를 만드는 함수입니다 | 91 | // 인포윈도우를 닫는 클로저를 만드는 함수입니다 |
70 | function makeOutListener(infowindow) { | 92 | function makeOutListener(infowindow) { |
71 | - return function() { | 93 | + return function () { |
72 | - infowindow.close(); | 94 | + infowindow.close(); |
73 | }; | 95 | }; |
74 | } | 96 | } |
75 | -*/ | 97 | + |
76 | 98 | ||
77 | function displayMarker(Position) { | 99 | function displayMarker(Position) { |
78 | var marker = new kakao.maps.Marker({ | 100 | var marker = new kakao.maps.Marker({ |
... | @@ -93,7 +115,6 @@ function getParameterByName(name, url = window.location.href) { | ... | @@ -93,7 +115,6 @@ function getParameterByName(name, url = window.location.href) { |
93 | } | 115 | } |
94 | 116 | ||
95 | //가격리스트로 year계산 | 117 | //가격리스트로 year계산 |
96 | -var priceList = [2000, 3000, 4000, 5000]; //임시로 넣어뒀습니다. | ||
97 | function yearCalc() { | 118 | function yearCalc() { |
98 | var sum = 0; | 119 | var sum = 0; |
99 | for (var i = 0; i < priceList.length; i++) { | 120 | for (var i = 0; i < priceList.length; i++) { |
... | @@ -110,6 +131,7 @@ var expenditure = getParameterByName("expenditure"); | ... | @@ -110,6 +131,7 @@ var expenditure = getParameterByName("expenditure"); |
110 | var year = yearCalc(); | 131 | var year = yearCalc(); |
111 | var div = document.getElementById("info"); | 132 | var div = document.getElementById("info"); |
112 | 133 | ||
134 | + | ||
113 | //20년을 초과한 결과값이 나올 때 20 + α 로 표시합니다. | 135 | //20년을 초과한 결과값이 나올 때 20 + α 로 표시합니다. |
114 | if (year > 20) { | 136 | if (year > 20) { |
115 | year = "20 + α "; | 137 | year = "20 + α "; |
... | @@ -117,7 +139,10 @@ if (year > 20) { | ... | @@ -117,7 +139,10 @@ if (year > 20) { |
117 | div.innerText = `${salary}만원의 월급과 ${expenditure}만원의 지출을 유지하면 당신은 ${year}년 후 아래의 집을 구매할 수 있습니다.`; | 139 | div.innerText = `${salary}만원의 월급과 ${expenditure}만원의 지출을 유지하면 당신은 ${year}년 후 아래의 집을 구매할 수 있습니다.`; |
118 | 140 | ||
119 | //주소 받아오기 | 141 | //주소 받아오기 |
120 | -var dataFromServer = ["xx동 xx", "xx", "00동 00"]; //임시로 넣어뒀습니다. | 142 | +dataFromServer = []; |
143 | +for (var i = 0; i < 5; i++) { | ||
144 | + dataFromServer.push("주소: " + newdata[i].add_adress + ", 가격: " + newdata[i].amount + "만원, 면적: " + newdata[i].dedicated_area); | ||
145 | +} | ||
121 | 146 | ||
122 | //next page li 요소 추가 | 147 | //next page li 요소 추가 |
123 | for (var i = 0; i < dataFromServer.length; i++) { | 148 | for (var i = 0; i < dataFromServer.length; i++) { |
... | @@ -125,4 +150,4 @@ for (var i = 0; i < dataFromServer.length; i++) { | ... | @@ -125,4 +150,4 @@ for (var i = 0; i < dataFromServer.length; i++) { |
125 | const textNode = document.createTextNode(dataFromServer[i]); | 150 | const textNode = document.createTextNode(dataFromServer[i]); |
126 | li.appendChild(textNode); | 151 | li.appendChild(textNode); |
127 | document.getElementById("house_list").appendChild(li); | 152 | document.getElementById("house_list").appendChild(li); |
128 | -} | ||
... | \ No newline at end of file | ... | \ No newline at end of file |
153 | +} | ... | ... |
... | @@ -39,14 +39,14 @@ app.get("/geolocation", function (req, res) { | ... | @@ -39,14 +39,14 @@ app.get("/geolocation", function (req, res) { |
39 | if (error) { | 39 | if (error) { |
40 | throw (error); | 40 | throw (error); |
41 | } | 41 | } |
42 | + json_data = []; | ||
42 | for (var i = 0; i < results.length; i++) { | 43 | for (var i = 0; i < results.length; i++) { |
43 | if (results[i].city_country == address) { | 44 | if (results[i].city_country == address) { |
44 | json_data.push(results[i]); | 45 | json_data.push(results[i]); |
45 | } | 46 | } |
46 | } | 47 | } |
48 | + res.render('kakaomap', { 'data': json_data }) | ||
47 | }); | 49 | }); |
48 | - res.render('kakaomap', { 'data': json_data }) | ||
49 | - // res.sendFile(path.join(__dirname + "/kakao/kakaomap.html"), { json_data: json_data }); | ||
50 | }); | 50 | }); |
51 | 51 | ||
52 | 52 | ... | ... |
... | @@ -14,8 +14,7 @@ | ... | @@ -14,8 +14,7 @@ |
14 | 14 | ||
15 | <body> | 15 | <body> |
16 | <nav> | 16 | <nav> |
17 | - <p>js data : <%=data[0].add_adress%> | 17 | + <input type="hidden" id="jsonData" value="<%=JSON.stringify(data)%>" /> |
18 | - </p> | ||
19 | <h1 onClick="location.href='/'">Home Purchase Age Prediction</h1> | 18 | <h1 onClick="location.href='/'">Home Purchase Age Prediction</h1> |
20 | </nav> | 19 | </nav> |
21 | <main> | 20 | <main> |
... | @@ -30,11 +29,6 @@ | ... | @@ -30,11 +29,6 @@ |
30 | <script type="text/javascript" | 29 | <script type="text/javascript" |
31 | src="//dapi.kakao.com/v2/maps/sdk.js?appkey=17cbb7795b615d8f1f0595f972e26c0f&libraries=services,clusterer,drawing"></script> | 30 | src="//dapi.kakao.com/v2/maps/sdk.js?appkey=17cbb7795b615d8f1f0595f972e26c0f&libraries=services,clusterer,drawing"></script> |
32 | <script type="text/javascript" src="../js/next_page.js"></script> | 31 | <script type="text/javascript" src="../js/next_page.js"></script> |
33 | - <% if(data){ %> | ||
34 | - <% for(let i=0;i < data.length;i++) { %> | ||
35 | - NAME : <%= data[i].add_adress %>, AGE : <%= data[i].amount %><br> | ||
36 | - <% } %> | ||
37 | - <% } %> | ||
38 | </body> | 32 | </body> |
39 | 33 | ||
40 | </html> | 34 | </html> |
... | \ No newline at end of file | ... | \ No newline at end of file | ... | ... |
-
Please register or login to post a comment