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