최현영

https://www.chyoss.tk:23023/construcion now, receive your location

...@@ -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 -} 59 + return function() {
56 -
57 -// 인포윈도우를 표시하는 클로저를 만드는 함수입니다
58 -function makeOverListener(map, marker, infowindow) {
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,
79 - }); 106 + image: image
107 + });
108 +
109 + var iwContent = message, // 인포윈도우에 표시할 내용
110 + iwRemoveable = true;
80 111
81 - // 마커에 표시할 인포윈도우를 생성합니다 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 - // 클로저를 만들어 주지 않으면 마지막 마커에만 이벤트가 등록됩니다 119 + infowindow.open(map, marker);
88 - (function(marker, infowindow) { 120 +
89 - // 마커에 mouseover 이벤트를 등록하고 마우스 오버 시 인포윈도우를 표시합니다 121 + // 지도 중심좌표를 접속위치로 변경합니다
90 - kakao.maps.event.addListener(marker, 'mouseover', function() { 122 + map.setCenter(locPosition);
91 - infowindow.open(map, marker);
92 - });
93 -
94 - // 마커에 mouseout 이벤트를 등록하고 마우스 아웃 시 인포윈도우를 닫습니다
95 - kakao.maps.event.addListener(marker, 'mouseout', function() {
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
......