https://www.chyoss.tk:23023/construcion now, receive your location
Showing
2 changed files
with
86 additions
and
36 deletions
... | @@ -68,7 +68,6 @@ app.get('/construction', function(req, res){ | ... | @@ -68,7 +68,6 @@ app.get('/construction', function(req, res){ |
68 | }) | 68 | }) |
69 | }) | 69 | }) |
70 | 70 | ||
71 | - | ||
72 | function jsonforecast(callback){ //교통예보 | 71 | function jsonforecast(callback){ //교통예보 |
73 | var url2 = 'http://data.ex.co.kr/openapi/safeDriving/forecast'; | 72 | var url2 = 'http://data.ex.co.kr/openapi/safeDriving/forecast'; |
74 | var queryParams2 = '?' + encodeURIComponent('key') + '=4365330273'; /* Service Key*/ | 73 | var queryParams2 = '?' + encodeURIComponent('key') + '=4365330273'; /* Service Key*/ |
... | @@ -538,6 +537,31 @@ function viewhtml(eventObj){ | ... | @@ -538,6 +537,31 @@ function viewhtml(eventObj){ |
538 | }); | 537 | }); |
539 | } | 538 | } |
540 | 539 | ||
540 | +function viewconstruction(eventObj){ | ||
541 | + request.post( | ||
542 | + { | ||
543 | + url: TARGET_URL, | ||
544 | + headers: { | ||
545 | + 'Authorization': `Bearer ${TOKEN}` | ||
546 | + }, | ||
547 | + json: { | ||
548 | + "replyToken":eventObj.replyToken, | ||
549 | + "messages":[ | ||
550 | + { | ||
551 | + "type":"text", | ||
552 | + "text":"실시간 고속국도 공사 상황 웹페이지로 안내합니다." | ||
553 | + }, | ||
554 | + { | ||
555 | + "type":"text", | ||
556 | + "text":"https://www.chyoss.tk:23023/construction" | ||
557 | + } | ||
558 | + ] | ||
559 | + } | ||
560 | + },(error, response, body) => { | ||
561 | + console.log(body) | ||
562 | + }); | ||
563 | +} | ||
564 | + | ||
541 | 565 | ||
542 | function leadfee(eventObj){ | 566 | function leadfee(eventObj){ |
543 | request.post( | 567 | request.post( | ... | ... |
... | @@ -6,18 +6,20 @@ | ... | @@ -6,18 +6,20 @@ |
6 | 6 | ||
7 | </head> | 7 | </head> |
8 | <body> | 8 | <body> |
9 | -<div id="map" style="width:100%;height:350px;"></div> | 9 | +<div id="map" style="width:100%; height:100%"></div> |
10 | - | 10 | +<style type="text/css"> html, body { height:100%; overflow:hidden } .h-div {height:96%; border:3px #f99 solid} </style> |
11 | +<div class="h-div"></div> | ||
11 | <form method="get" action="/process/mapconstruction"></form> | 12 | <form method="get" action="/process/mapconstruction"></form> |
12 | <script type="text/javascript" src="//dapi.kakao.com/v2/maps/sdk.js?appkey=3ebfae70e971821ab8f14e074d068bdc"></script> | 13 | <script type="text/javascript" src="//dapi.kakao.com/v2/maps/sdk.js?appkey=3ebfae70e971821ab8f14e074d068bdc"></script> |
13 | <script> | 14 | <script> |
14 | var mapContainer = document.getElementById('map'), // 지도를 표시할 div | 15 | var mapContainer = document.getElementById('map'), // 지도를 표시할 div |
15 | mapOption = { | 16 | mapOption = { |
16 | center: new kakao.maps.LatLng(33.450701, 126.570667), // 지도의 중심좌표 | 17 | center: new kakao.maps.LatLng(33.450701, 126.570667), // 지도의 중심좌표 |
17 | - level: 3 // 지도의 확대 레벨 | 18 | + level: 12// 지도의 확대 레벨 |
18 | }; | 19 | }; |
19 | 20 | ||
20 | var map = new kakao.maps.Map(mapContainer, mapOption); // 지도를 생성합니다 | 21 | var map = new kakao.maps.Map(mapContainer, mapOption); // 지도를 생성합니다 |
22 | +map.relayout(); | ||
21 | var json = <%- JSON.stringify(construnctionjson) %>; | 23 | var json = <%- JSON.stringify(construnctionjson) %>; |
22 | console.log(json); | 24 | console.log(json); |
23 | 25 | ||
... | @@ -39,65 +41,89 @@ for (var i = 0; i < positions.length; i ++) { | ... | @@ -39,65 +41,89 @@ for (var i = 0; i < positions.length; i ++) { |
39 | // 마커를 생성합니다 | 41 | // 마커를 생성합니다 |
40 | var marker = new kakao.maps.Marker({ | 42 | var marker = new kakao.maps.Marker({ |
41 | map: map, // 마커를 표시할 지도 | 43 | map: map, // 마커를 표시할 지도 |
42 | - position: positions[i].latlng // 마커의 위치 | 44 | + position: positions[i].latlng, // 마커의 위치 |
45 | + clickable: true | ||
43 | }); | 46 | }); |
44 | 47 | ||
45 | // 마커에 표시할 인포윈도우를 생성합니다 | 48 | // 마커에 표시할 인포윈도우를 생성합니다 |
46 | var infowindow = new kakao.maps.InfoWindow({ | 49 | var infowindow = new kakao.maps.InfoWindow({ |
47 | - content: positions[i].content // 인포윈도우에 표시할 내용 | 50 | + content: '<div>'+ positions[i].content + '</div>', |
51 | + removable: true // 인포윈도우에 표시할 내용 | ||
48 | }); | 52 | }); |
49 | 53 | ||
50 | // 마커에 mouseover 이벤트와 mouseout 이벤트를 등록합니다 | 54 | // 마커에 mouseover 이벤트와 mouseout 이벤트를 등록합니다 |
51 | // 이벤트 리스너로는 클로저를 만들어 등록합니다 | 55 | // 이벤트 리스너로는 클로저를 만들어 등록합니다 |
52 | // for문에서 클로저를 만들어 주지 않으면 마지막 마커에만 이벤트가 등록됩니다 | 56 | // for문에서 클로저를 만들어 주지 않으면 마지막 마커에만 이벤트가 등록됩니다 |
53 | - kakao.maps.event.addListener(marker, 'mouseover', makeOverListener(map, marker, infowindow)); | 57 | + kakao.maps.event.addListener(marker, 'click', makeClickListener(map, marker, infowindow)); |
54 | - kakao.maps.event.addListener(marker, 'mouseout', makeOutListener(infowindow)); | 58 | + function makeClickListener(map, marker, infowindow) { |
55 | -} | ||
56 | - | ||
57 | -// 인포윈도우를 표시하는 클로저를 만드는 함수입니다 | ||
58 | -function makeOverListener(map, marker, infowindow) { | ||
59 | return function() { | 59 | return function() { |
60 | infowindow.open(map, marker); | 60 | infowindow.open(map, marker); |
61 | }; | 61 | }; |
62 | + } | ||
63 | + | ||
62 | } | 64 | } |
63 | 65 | ||
64 | -// 인포윈도우를 닫는 클로저를 만드는 함수입니다 | 66 | + |
65 | -function makeOutListener(infowindow) { | 67 | + |
66 | - return function() { | 68 | +var imageSrc = 'https://t1.daumcdn.net/localimg/localimages/07/mapapidoc/markerStar.png', // 마커이미지의 주소입니다 |
67 | - infowindow.close(); | 69 | + imageSize = new kakao.maps.Size(40, 40), // 마커이미지의 크기입니다 |
68 | - }; | 70 | + imageOption = {offset: new kakao.maps.Point(27, 69)}; |
71 | + | ||
72 | + var markerImage = new kakao.maps.MarkerImage(imageSrc, imageSize, imageOption); | ||
73 | + | ||
74 | +// HTML5의 geolocation으로 사용할 수 있는지 확인합니다 | ||
75 | +if (navigator.geolocation) { | ||
76 | + | ||
77 | + // GeoLocation을 이용해서 접속 위치를 얻어옵니다 | ||
78 | + navigator.geolocation.getCurrentPosition(function(position) { | ||
79 | + | ||
80 | + var lat = position.coords.latitude, // 위도 | ||
81 | + lon = position.coords.longitude; // 경도 | ||
82 | + | ||
83 | + var locPosition = new kakao.maps.LatLng(lat, lon), // 마커가 표시될 위치를 geolocation으로 얻어온 좌표로 생성합니다 | ||
84 | + message = '<div style="padding:5px;">여기에 계신가요?!</div>'; // 인포윈도우에 표시될 내용입니다 | ||
85 | + | ||
86 | + // 마커와 인포윈도우를 표시합니다 | ||
87 | + displayMarker(locPosition, message, markerImage); | ||
88 | + | ||
89 | + }); | ||
90 | + | ||
91 | +} else { // HTML5의 GeoLocation을 사용할 수 없을때 마커 표시 위치와 인포윈도우 내용을 설정합니다 | ||
92 | + | ||
93 | + var locPosition = new kakao.maps.LatLng(33.450701, 126.570667), | ||
94 | + message = 'geolocation을 사용할수 없어요..' | ||
95 | + | ||
96 | + displayMarker(locPosition, message); | ||
69 | } | 97 | } |
70 | 98 | ||
99 | +// 지도에 마커와 인포윈도우를 표시하는 함수입니다 | ||
100 | +function displayMarker(locPosition, message, image) { | ||
71 | 101 | ||
72 | -/* 아래와 같이도 할 수 있습니다 */ | ||
73 | -/* | ||
74 | -for (var i = 0; i < positions.length; i ++) { | ||
75 | // 마커를 생성합니다 | 102 | // 마커를 생성합니다 |
76 | var marker = new kakao.maps.Marker({ | 103 | var marker = new kakao.maps.Marker({ |
77 | - map: map, // 마커를 표시할 지도 | 104 | + map: map, |
78 | - position: positions[i].latlng // 마커의 위치 | 105 | + position: locPosition, |
106 | + image: image | ||
79 | }); | 107 | }); |
80 | 108 | ||
81 | - // 마커에 표시할 인포윈도우를 생성합니다 | 109 | + var iwContent = message, // 인포윈도우에 표시할 내용 |
110 | + iwRemoveable = true; | ||
111 | + | ||
112 | + // 인포윈도우를 생성합니다 | ||
82 | var infowindow = new kakao.maps.InfoWindow({ | 113 | var infowindow = new kakao.maps.InfoWindow({ |
83 | - content: positions[i].content // 인포윈도우에 표시할 내용 | 114 | + content : iwContent, |
115 | + removable : iwRemoveable | ||
84 | }); | 116 | }); |
85 | 117 | ||
86 | - // 마커에 이벤트를 등록하는 함수 만들고 즉시 호출하여 클로저를 만듭니다 | 118 | + // 인포윈도우를 마커위에 표시합니다 |
87 | - // 클로저를 만들어 주지 않으면 마지막 마커에만 이벤트가 등록됩니다 | ||
88 | - (function(marker, infowindow) { | ||
89 | - // 마커에 mouseover 이벤트를 등록하고 마우스 오버 시 인포윈도우를 표시합니다 | ||
90 | - kakao.maps.event.addListener(marker, 'mouseover', function() { | ||
91 | infowindow.open(map, marker); | 119 | infowindow.open(map, marker); |
92 | - }); | ||
93 | 120 | ||
94 | - // 마커에 mouseout 이벤트를 등록하고 마우스 아웃 시 인포윈도우를 닫습니다 | 121 | + // 지도 중심좌표를 접속위치로 변경합니다 |
95 | - kakao.maps.event.addListener(marker, 'mouseout', function() { | 122 | + map.setCenter(locPosition); |
96 | - infowindow.close(); | ||
97 | - }); | ||
98 | - })(marker, infowindow); | ||
99 | } | 123 | } |
100 | -*/ | 124 | + |
125 | + | ||
126 | + | ||
101 | </script> | 127 | </script> |
102 | </body> | 128 | </body> |
103 | </html> | 129 | </html> |
... | \ No newline at end of file | ... | \ No newline at end of file | ... | ... |
-
Please register or login to post a comment