Showing
7 changed files
with
225 additions
and
53 deletions
... | @@ -5,6 +5,7 @@ const app = express(); | ... | @@ -5,6 +5,7 @@ const app = express(); |
5 | //화면 별 router 연결, 라우터 호출해서 페이지를 불러오는데 사용함. | 5 | //화면 별 router 연결, 라우터 호출해서 페이지를 불러오는데 사용함. |
6 | var mainRouter = require('./routes') //호출시 main.js 실행 (main.js : title 할당하고 main.html 열어줌) | 6 | var mainRouter = require('./routes') //호출시 main.js 실행 (main.js : title 할당하고 main.html 열어줌) |
7 | var loginRouter = require('./routes/login') | 7 | var loginRouter = require('./routes/login') |
8 | +var NearContentRouter = require('./routes/database') | ||
8 | //디폴트 포트 값 : 8000 | 9 | //디폴트 포트 값 : 8000 |
9 | app.set('port', process.env.PORT || 8000); | 10 | app.set('port', process.env.PORT || 8000); |
10 | 11 | ||
... | @@ -16,15 +17,15 @@ app.engine('html', require('ejs').renderFile); | ... | @@ -16,15 +17,15 @@ app.engine('html', require('ejs').renderFile); |
16 | //각각의 요청에서 router 호출해서 page를 전환함. | 17 | //각각의 요청에서 router 호출해서 page를 전환함. |
17 | app.use('/', mainRouter); | 18 | app.use('/', mainRouter); |
18 | app.use('/login', loginRouter); | 19 | app.use('/login', loginRouter); |
19 | - | 20 | +// app.use('/map', NearContentRouter); |
20 | 21 | ||
21 | //css, image 등 정적 파일을 public에서 불러옴 -> html과 연결함 | 22 | //css, image 등 정적 파일을 public에서 불러옴 -> html과 연결함 |
22 | app.use(express.static(path.join(__dirname, 'public'))); | 23 | app.use(express.static(path.join(__dirname, 'public'))); |
23 | 24 | ||
24 | 25 | ||
25 | -app.get('/logout', function (req, res) { | 26 | +// app.get('/logout', function (req, res) { |
26 | - res.send("Logout success"); | 27 | +// res.send("Logout success"); |
27 | -}); | 28 | +// }); |
28 | 29 | ||
29 | 30 | ||
30 | app.listen(app.get('port'), () => { | 31 | app.listen(app.get('port'), () => { | ... | ... |
1 | <!DOCTYPE html> | 1 | <!DOCTYPE html> |
2 | <html> | 2 | <html> |
3 | + | ||
3 | <head> | 4 | <head> |
4 | <meta charset="utf-8"> | 5 | <meta charset="utf-8"> |
5 | <title>geolocation으로 마커 표시하기</title> | 6 | <title>geolocation으로 마커 표시하기</title> |
6 | 7 | ||
7 | </head> | 8 | </head> |
9 | + | ||
8 | <body> | 10 | <body> |
9 | -<p style="margin-top:-12px"> | 11 | + <p style="margin-top:-12px"> |
10 | <b>Chrome 브라우저는 https 환경에서만 geolocation을 지원합니다.</b> 참고해주세요. | 12 | <b>Chrome 브라우저는 https 환경에서만 geolocation을 지원합니다.</b> 참고해주세요. |
11 | -</p> | 13 | + </p> |
12 | -<div id="map" style="width:500px;height:350px;"></div> | 14 | + <div id="map" style="width:500px;height:350px;"></div> |
13 | 15 | ||
14 | -<script type="text/javascript" src="//dapi.kakao.com/v2/maps/sdk.js?appkey=a3386042ab2e0550ea06d265855b452c">//kakao map api 주소 받아옴</script> | 16 | + <script type="text/javascript" |
15 | -<script> | 17 | + src="//dapi.kakao.com/v2/maps/sdk.js?appkey=a3386042ab2e0550ea06d265855b452c">//kakao map api 주소 받아옴</script> |
16 | -const near=require('study.js'); | 18 | + <script> |
19 | + const near = require('study.js'); | ||
17 | 20 | ||
18 | -var mapContainer = document.getElementById('map'), // 지도를 표시할 div | 21 | + var mapContainer = document.getElementById('map'), // 지도를 표시할 div |
19 | mapOption = { | 22 | mapOption = { |
20 | center: new kakao.maps.LatLng(33.450701, 126.570667), // 지도의 중심좌표 | 23 | center: new kakao.maps.LatLng(33.450701, 126.570667), // 지도의 중심좌표 |
21 | level: 10 // 지도의 확대 레벨 | 24 | level: 10 // 지도의 확대 레벨 |
22 | }; | 25 | }; |
23 | 26 | ||
24 | -var map = new kakao.maps.Map(mapContainer, mapOption); // 지도를 생성합니다 | 27 | + var map = new kakao.maps.Map(mapContainer, mapOption); // 지도를 생성합니다 |
25 | 28 | ||
26 | -// HTML5의 geolocation으로 사용할 수 있는지 확인합니다 | 29 | + // HTML5의 geolocation으로 사용할 수 있는지 확인합니다 |
27 | -if (navigator.geolocation) { | 30 | + if (navigator.geolocation) { |
28 | 31 | ||
29 | // GeoLocation을 이용해서 접속 위치를 얻어옵니다 | 32 | // GeoLocation을 이용해서 접속 위치를 얻어옵니다 |
30 | - navigator.geolocation.getCurrentPosition(function(position) { | 33 | + navigator.geolocation.getCurrentPosition(function (position) { |
31 | 34 | ||
32 | var lat = position.coords.latitude, // 위도 | 35 | var lat = position.coords.latitude, // 위도 |
33 | lon = position.coords.longitude; // 경도 | 36 | lon = position.coords.longitude; // 경도 |
... | @@ -38,30 +41,31 @@ if (navigator.geolocation) { | ... | @@ -38,30 +41,31 @@ if (navigator.geolocation) { |
38 | 41 | ||
39 | // 마커와 인포윈도우를 표시합니다 | 42 | // 마커와 인포윈도우를 표시합니다 |
40 | displayMarker(locPosition, message); | 43 | displayMarker(locPosition, message); |
41 | - | ||
42 | }); | 44 | }); |
43 | 45 | ||
44 | -} else { // HTML5의 GeoLocation을 사용할 수 없을때 마커 표시 위치와 인포윈도우 내용을 설정합니다 | 46 | + } else { // HTML5의 GeoLocation을 사용할 수 없을때 마커 표시 위치와 인포윈도우 내용을 설정합니다 |
45 | 47 | ||
46 | var locPosition = new kakao.maps.LatLng(33.450701, 126.570667), | 48 | var locPosition = new kakao.maps.LatLng(33.450701, 126.570667), |
47 | message = 'geolocation을 사용할수 없어요..' | 49 | message = 'geolocation을 사용할수 없어요..' |
48 | 50 | ||
49 | displayMarker(locPosition, message); | 51 | displayMarker(locPosition, message); |
50 | -} | 52 | + } |
51 | 53 | ||
52 | 54 | ||
53 | 55 | ||
54 | 56 | ||
55 | -displayShows(); | 57 | + displayShows(); |
56 | -function displayShows(){ | 58 | + function displayShows() { |
57 | var imageSrc = "https://t1.daumcdn.net/localimg/localimages/07/mapapidoc/markerStar.png"; | 59 | var imageSrc = "https://t1.daumcdn.net/localimg/localimages/07/mapapidoc/markerStar.png"; |
58 | - var near_list=near(lat,lon); | 60 | + var near_list = near(lat, lon); |
59 | - var positions=[]; | 61 | + var positions = []; |
60 | - for(var i =0;i<near_list.length;i++){ | 62 | + for (var i = 0; i < near_list.length; i++) { |
61 | - positions.push({title: id, | 63 | + positions.push({ |
62 | - lating: new kaka0.maps.Lating(near_list[i][1],near_list[i][2])}) | 64 | + title: id, |
65 | + lating: new kakao.maps.Lating(near_list[i][1], near_list[i][2]) | ||
66 | + }) | ||
63 | } | 67 | } |
64 | -for (var i = 0; i < positions.length; i ++) { | 68 | + for (var i = 0; i < positions.length; i++) { |
65 | 69 | ||
66 | // 마커 이미지의 이미지 크기 입니다 | 70 | // 마커 이미지의 이미지 크기 입니다 |
67 | var imageSize = new kakao.maps.Size(24, 35); | 71 | var imageSize = new kakao.maps.Size(24, 35); |
... | @@ -73,13 +77,13 @@ for (var i = 0; i < positions.length; i ++) { | ... | @@ -73,13 +77,13 @@ for (var i = 0; i < positions.length; i ++) { |
73 | var marker = new kakao.maps.Marker({ | 77 | var marker = new kakao.maps.Marker({ |
74 | map: map, // 마커를 표시할 지도 | 78 | map: map, // 마커를 표시할 지도 |
75 | position: positions[i].latlng, // 마커를 표시할 위치 | 79 | position: positions[i].latlng, // 마커를 표시할 위치 |
76 | - title : positions[i].title, // 마커의 타이틀, 마커에 마우스를 올리면 타이틀이 표시됩니다 | 80 | + title: positions[i].title, // 마커의 타이틀, 마커에 마우스를 올리면 타이틀이 표시됩니다 |
77 | - image : markerImage // 마커 이미지 | 81 | + image: markerImage // 마커 이미지 |
78 | }); | 82 | }); |
79 | } | 83 | } |
80 | -} | 84 | + } |
81 | -// 지도에 마커와 인포윈도우를 표시하는 함수입니다 | 85 | + // 지도에 마커와 인포윈도우를 표시하는 함수입니다 |
82 | -function displayMarker(locPosition, message) { | 86 | + function displayMarker(locPosition, message) { |
83 | 87 | ||
84 | // 마커를 생성합니다 | 88 | // 마커를 생성합니다 |
85 | var marker = new kakao.maps.Marker({ | 89 | var marker = new kakao.maps.Marker({ |
... | @@ -92,8 +96,8 @@ function displayMarker(locPosition, message) { | ... | @@ -92,8 +96,8 @@ function displayMarker(locPosition, message) { |
92 | 96 | ||
93 | // 인포윈도우를 생성합니다 | 97 | // 인포윈도우를 생성합니다 |
94 | var infowindow = new kakao.maps.InfoWindow({ | 98 | var infowindow = new kakao.maps.InfoWindow({ |
95 | - content : iwContent, | 99 | + content: iwContent, |
96 | - removable : iwRemoveable | 100 | + removable: iwRemoveable |
97 | }); | 101 | }); |
98 | 102 | ||
99 | // 인포윈도우를 마커위에 표시합니다 | 103 | // 인포윈도우를 마커위에 표시합니다 |
... | @@ -101,7 +105,8 @@ function displayMarker(locPosition, message) { | ... | @@ -101,7 +105,8 @@ function displayMarker(locPosition, message) { |
101 | 105 | ||
102 | // 지도 중심좌표를 접속위치로 변경합니다 | 106 | // 지도 중심좌표를 접속위치로 변경합니다 |
103 | map.setCenter(locPosition); | 107 | map.setCenter(locPosition); |
104 | -} | 108 | + } |
105 | -</script> | 109 | + </script> |
106 | </body> | 110 | </body> |
111 | + | ||
107 | </html> | 112 | </html> |
... | \ No newline at end of file | ... | \ No newline at end of file | ... | ... |
1 | var mysql = require('mysql'); | 1 | var mysql = require('mysql'); |
2 | 2 | ||
3 | -module.exports={ | 3 | +module.exports = { |
4 | - nearShow: function(lat,lon){ | 4 | + nearShow: function (lat, lon) { |
5 | - var near_show_list=[]; | 5 | + var near_show_list = []; |
6 | var connection = mysql.createConnection({ | 6 | var connection = mysql.createConnection({ |
7 | "host": "culturegallery.cm2bwcuyukrm.us-east-1.rds.amazonaws.com", | 7 | "host": "culturegallery.cm2bwcuyukrm.us-east-1.rds.amazonaws.com", |
8 | - "user":"root", | 8 | + "user": "root", |
9 | "password": "dldbwp1207", | 9 | "password": "dldbwp1207", |
10 | "port": "3306", | 10 | "port": "3306", |
11 | "database": "showdata" | 11 | "database": "showdata" |
12 | }); | 12 | }); |
13 | 13 | ||
14 | connection.connect(); | 14 | connection.connect(); |
15 | - var dataNum=0; | 15 | + var dataNum = 0; |
16 | - connection.query('SELECT COUNT (*) AS cnt FROM SHOW_DATA',function(error,results,field){ | 16 | + connection.query('SELECT COUNT (*) AS cnt FROM SHOW_DATA', function (error, results, field) { |
17 | - if(error){ | 17 | + if (error) { |
18 | console.log(error); | 18 | console.log(error); |
19 | } | 19 | } |
20 | console.log(results[0].cnt); | 20 | console.log(results[0].cnt); |
21 | - dataNum=results[0].cnt; | 21 | + dataNum = results[0].cnt; |
22 | }); | 22 | }); |
23 | 23 | ||
24 | - connection.query('SELECT id,latitude,longitude FROM SHOW_DATA',function(error,results,field){ | 24 | + connection.query('SELECT id,latitude,longitude FROM SHOW_DATA', function (error, results, field) { |
25 | - if(error){ | 25 | + if (error) { |
26 | console.log(error); | 26 | console.log(error); |
27 | } | 27 | } |
28 | - console.log([lat,lon]); | 28 | + console.log([lat, lon]); |
29 | - for(var i=0;i<dataNum;i++){ | 29 | + for (var i = 0; i < dataNum; i++) { |
30 | - var latgap=(lat-results[i].latitude)*110; | 30 | + var latgap = (lat - results[i].latitude) * 110; |
31 | - var longap=(lon-results[i].longitude)*91; | 31 | + var longap = (lon - results[i].longitude) * 91; |
32 | - var cal=latgap*latgap+longap*longap; | 32 | + var cal = latgap * latgap + longap * longap; |
33 | - if(cal<=1600){ | 33 | + |
34 | + //내 위치 반경 키로수 ^ 2만큼 cal 값 push -> content 위치 | ||
35 | + if (cal <= 1600) { | ||
34 | console.log(results[i].id); | 36 | console.log(results[i].id); |
35 | - near_show_list.push([results[i].id,results[i].latitude,results[i].longitude]); | 37 | + near_show_list.push([results[i].id, results[i].latitude, results[i].longitude]); |
36 | } | 38 | } |
37 | } | 39 | } |
38 | }); | 40 | }); | ... | ... |
This diff is collapsed. Click to expand it.
routes/database.js
0 → 100644
1 | +var mysql = require('mysql'); | ||
2 | + | ||
3 | +module.exports = { | ||
4 | + init: function (lat, lon) { | ||
5 | + var near_show_list = []; | ||
6 | + var connection = mysql.createConnection({ | ||
7 | + "host": "culturegallery.cm2bwcuyukrm.us-east-1.rds.amazonaws.com", | ||
8 | + "user": "root", | ||
9 | + "password": "dldbwp1207", | ||
10 | + "port": "3306", | ||
11 | + "database": "showdata" | ||
12 | + }); | ||
13 | + | ||
14 | + connection.connect(); | ||
15 | + var dataNum = 0; | ||
16 | + connection.query('SELECT COUNT (*) AS cnt FROM SHOW_DATA', function (error, results, field) { | ||
17 | + if (error) { | ||
18 | + console.log(error); | ||
19 | + } | ||
20 | + console.log(results[0].cnt); | ||
21 | + dataNum = results[0].cnt; | ||
22 | + }); | ||
23 | + | ||
24 | + connection.query('SELECT id,latitude,longitude FROM SHOW_DATA', function (error, results, field) { | ||
25 | + if (error) { | ||
26 | + console.log(error); | ||
27 | + } | ||
28 | + console.log([lat, lon]); | ||
29 | + for (var i = 0; i < dataNum; i++) { | ||
30 | + var latgap = (lat - results[i].latitude) * 110; | ||
31 | + var longap = (lon - results[i].longitude) * 91; | ||
32 | + var cal = latgap * latgap + longap * longap; | ||
33 | + | ||
34 | + //내 위치 반경 키로수 ^ 2만큼 cal 값 push -> content 위치 | ||
35 | + if (cal <= 1600) { | ||
36 | + console.log(results[i].id); | ||
37 | + near_show_list.push([results[i].id, results[i].latitude, results[i].longitude]); | ||
38 | + } | ||
39 | + } | ||
40 | + }); | ||
41 | + | ||
42 | + connection.end(); | ||
43 | + // return near_show_list; | ||
44 | + } | ||
45 | +} |
... | @@ -9,7 +9,14 @@ router.get('/', function (req, res, next) { | ... | @@ -9,7 +9,14 @@ router.get('/', function (req, res, next) { |
9 | 9 | ||
10 | /* GET home page. */ | 10 | /* GET home page. */ |
11 | router.get('/login', function (req, res, next) { | 11 | router.get('/login', function (req, res, next) { |
12 | - res.render('login.html', { title: 'Login1' }); | 12 | + res.render('login.html', { title: 'Login' }); |
13 | console.log('로그인 페이지 접속 성공'); | 13 | console.log('로그인 페이지 접속 성공'); |
14 | }); | 14 | }); |
15 | + | ||
16 | +/* GET home page. */ | ||
17 | +router.get('/map', function (req, res, next) { | ||
18 | + res.render('map_sql.html'); | ||
19 | + console.log('현위치 기반 content 마킹 성공'); | ||
20 | +}); | ||
21 | + | ||
15 | module.exports = router; | 22 | module.exports = router; |
... | \ No newline at end of file | ... | \ No newline at end of file | ... | ... |
views/map_sql.html
0 → 100644
1 | +<!DOCTYPE html> | ||
2 | +<html> | ||
3 | + | ||
4 | +<head> | ||
5 | + <meta charset="utf-8"> | ||
6 | + <title>geolocation으로 마커 표시하기</title> | ||
7 | + | ||
8 | +</head> | ||
9 | + | ||
10 | +<body> | ||
11 | + <p style="margin-top:-12px"> | ||
12 | + <b>Chrome 브라우저는 https 환경에서만 geolocation을 지원합니다.</b> 참고해주세요. | ||
13 | + </p> | ||
14 | + <div id="map" style="width:500px;height:350px;"></div> | ||
15 | + | ||
16 | + <script type="text/javascript" | ||
17 | + src="//dapi.kakao.com/v2/maps/sdk.js?appkey=a3386042ab2e0550ea06d265855b452c">//kakao map api 주소 받아옴</script> | ||
18 | + <script> | ||
19 | + const near = require('database.js'); | ||
20 | + | ||
21 | + var mapContainer = document.getElementById('map'), // 지도를 표시할 div | ||
22 | + mapOption = { | ||
23 | + center: new kakao.maps.LatLng(33.450701, 126.570667), // 지도의 중심좌표 | ||
24 | + level: 10 // 지도의 확대 레벨 | ||
25 | + }; | ||
26 | + | ||
27 | + var map = new kakao.maps.Map(mapContainer, mapOption); // 지도를 생성합니다 | ||
28 | + | ||
29 | + // HTML5의 geolocation으로 사용할 수 있는지 확인합니다 | ||
30 | + if (navigator.geolocation) { | ||
31 | + | ||
32 | + // GeoLocation을 이용해서 접속 위치를 얻어옵니다 | ||
33 | + navigator.geolocation.getCurrentPosition(function (position) { | ||
34 | + | ||
35 | + var lat = position.coords.latitude, // 위도 | ||
36 | + lon = position.coords.longitude; // 경도 | ||
37 | + console.log(lat); | ||
38 | + console.log(lon); | ||
39 | + var locPosition = new kakao.maps.LatLng(lat, lon), // 마커가 표시될 위치를 geolocation으로 얻어온 좌표로 생성합니다 | ||
40 | + message = '<div style="padding:5px;">여기에 계신가요?!</div>'; // 인포윈도우에 표시될 내용입니다 | ||
41 | + | ||
42 | + // 마커와 인포윈도우를 표시합니다 | ||
43 | + displayMarker(locPosition, message); | ||
44 | + }); | ||
45 | + | ||
46 | + } else { // HTML5의 GeoLocation을 사용할 수 없을때 마커 표시 위치와 인포윈도우 내용을 설정합니다 | ||
47 | + | ||
48 | + var locPosition = new kakao.maps.LatLng(33.450701, 126.570667), | ||
49 | + message = 'geolocation을 사용할수 없어요..' | ||
50 | + | ||
51 | + displayMarker(locPosition, message); | ||
52 | + } | ||
53 | + | ||
54 | + | ||
55 | + | ||
56 | + | ||
57 | + displayShows(); | ||
58 | + function displayShows() { | ||
59 | + var imageSrc = "https://t1.daumcdn.net/localimg/localimages/07/mapapidoc/markerStar.png"; | ||
60 | + var near_list = near(lat, lon); | ||
61 | + var positions = []; | ||
62 | + for (var i = 0; i < near_list.length; i++) { | ||
63 | + positions.push({ | ||
64 | + title: id, | ||
65 | + lating: new kakao.maps.Lating(near_list[i][1], near_list[i][2]) | ||
66 | + }) | ||
67 | + } | ||
68 | + for (var i = 0; i < positions.length; i++) { | ||
69 | + | ||
70 | + // 마커 이미지의 이미지 크기 입니다 | ||
71 | + var imageSize = new kakao.maps.Size(24, 35); | ||
72 | + | ||
73 | + // 마커 이미지를 생성합니다 | ||
74 | + var markerImage = new kakao.maps.MarkerImage(imageSrc, imageSize); | ||
75 | + | ||
76 | + // 마커를 생성합니다 | ||
77 | + var marker = new kakao.maps.Marker({ | ||
78 | + map: map, // 마커를 표시할 지도 | ||
79 | + position: positions[i].latlng, // 마커를 표시할 위치 | ||
80 | + title: positions[i].title, // 마커의 타이틀, 마커에 마우스를 올리면 타이틀이 표시됩니다 | ||
81 | + image: markerImage // 마커 이미지 | ||
82 | + }); | ||
83 | + } | ||
84 | + } | ||
85 | + // 지도에 마커와 인포윈도우를 표시하는 함수입니다 | ||
86 | + function displayMarker(locPosition, message) { | ||
87 | + | ||
88 | + // 마커를 생성합니다 | ||
89 | + var marker = new kakao.maps.Marker({ | ||
90 | + map: map, | ||
91 | + position: locPosition | ||
92 | + }); | ||
93 | + | ||
94 | + var iwContent = message, // 인포윈도우에 표시할 내용 | ||
95 | + iwRemoveable = true; | ||
96 | + | ||
97 | + // 인포윈도우를 생성합니다 | ||
98 | + var infowindow = new kakao.maps.InfoWindow({ | ||
99 | + content: iwContent, | ||
100 | + removable: iwRemoveable | ||
101 | + }); | ||
102 | + | ||
103 | + // 인포윈도우를 마커위에 표시합니다 | ||
104 | + infowindow.open(map, marker); | ||
105 | + | ||
106 | + // 지도 중심좌표를 접속위치로 변경합니다 | ||
107 | + map.setCenter(locPosition); | ||
108 | + } | ||
109 | + </script> | ||
110 | +</body> | ||
111 | + | ||
112 | +</html> | ||
... | \ No newline at end of file | ... | \ No newline at end of file |
-
Please register or login to post a comment