Showing
2 changed files
with
52 additions
and
140 deletions
kakao/kakaomap3.html
deleted
100644 → 0
| 1 | -<!DOCTYPE html> | ||
| 2 | -<html> | ||
| 3 | -<head> | ||
| 4 | - <meta charset="utf-8"> | ||
| 5 | - <title>다음 지도 API</title> | ||
| 6 | -</head> | ||
| 7 | -<body> | ||
| 8 | - <div id="map" style="width:750px;height:350px;"></div> | ||
| 9 | - | ||
| 10 | - <script src="https://dapi.kakao.com/v2/maps/sdk.js?appkey=a21612f3bd7cf34230c238ce03ca482b"></script> | ||
| 11 | - <script> | ||
| 12 | - var mapContainer = document.getElementById('map'), // 지도를 표시할 div | ||
| 13 | - mapOption = { | ||
| 14 | - center: new kakao.maps.LatLng(37.56819, 126.98042), // 지도의 중심좌표 | ||
| 15 | - level: 2, // 지도의 확대 레벨 | ||
| 16 | - mapTypeId : kakao.maps.MapTypeId.ROADMAP // 지도종류 | ||
| 17 | - }; | ||
| 18 | - | ||
| 19 | - // 지도를 생성한다 | ||
| 20 | - var map = new kakao.maps.Map(mapContainer, mapOption); | ||
| 21 | - | ||
| 22 | - var marker = new kakao.maps.Marker({ | ||
| 23 | - position: new kakao.maps.LatLng(37.56756, 126.97927), // 마커의 좌표 | ||
| 24 | - map: map // 마커를 표시할 지도 객체 | ||
| 25 | - }); | ||
| 26 | - | ||
| 27 | - var iwContent = '<div style="padding: 5px">내용</div>' | ||
| 28 | - | ||
| 29 | - | ||
| 30 | - | ||
| 31 | - // 인포윈도우를 생성합니다 | ||
| 32 | - var infowindow = new kakao.maps.InfoWindow({ | ||
| 33 | - position : iwPosition, | ||
| 34 | - content : iwContent | ||
| 35 | - }); | ||
| 36 | - | ||
| 37 | - // 마커 위에 인포윈도우를 표시합니다. 두번째 파라미터인 marker를 넣어주지 않으면 지도 위에 표시됩니다 | ||
| 38 | - infowindow.open(map, marker); | ||
| 39 | - | ||
| 40 | - // HTML5의 geolocation으로 사용할 수 있는지 확인합니다 | ||
| 41 | - if (navigator.geolocation) { | ||
| 42 | - navigator.geolocation.getCurrentPosition(function(position) { | ||
| 43 | - var lat = position.coords.latitude, // 위도 | ||
| 44 | - lon = position.coords.longitude; // 경도 | ||
| 45 | - var locPosition = new kakao.maps.LatLng(lat, lon), // 마커가 표시될 위치를 geolocation으로 얻어온 좌표로 생성합니다 | ||
| 46 | - message = '<div style="padding:5px;">여기에 계신가요?!</div>'; // 인포윈도우에 표시될 내용입니다 | ||
| 47 | - | ||
| 48 | - // 마커와 인포윈도우를 표시합니다 | ||
| 49 | - displayMarker(locPosition, message); | ||
| 50 | - }); | ||
| 51 | - | ||
| 52 | - } | ||
| 53 | - | ||
| 54 | - else { // HTML5의 GeoLocation을 사용할 수 없을때 마커 표시 위치와 인포윈도우 내용을 설정합니다 | ||
| 55 | - var locPosition = new kakao.maps.LatLng(33.450701, 126.570667), | ||
| 56 | - message = 'geolocation을 사용할수 없어요..' | ||
| 57 | - displayMarker(locPosition, message); | ||
| 58 | - } | ||
| 59 | - | ||
| 60 | - var gps_use = null; //gps의 사용가능 여부 | ||
| 61 | - var gps_lat = null; // 위도 | ||
| 62 | - var gps_lng = null; // 경도 | ||
| 63 | - var gps_position; // gps 위치 객체 | ||
| 64 | - | ||
| 65 | - gps_check(); | ||
| 66 | - // gps가 이용가능한지 체크하는 함수이며, 이용가능하다면 show location 함수를 불러온다. | ||
| 67 | - // 만약 작동되지 않는다면 경고창을 띄우고, 에러가 있다면 errorHandler 함수를 불러온다. | ||
| 68 | - // timeout을 통해 시간제한을 둔다. | ||
| 69 | - function gps_check(){ | ||
| 70 | - if (navigator.geolocation) { | ||
| 71 | - var options = {timeout:60000}; | ||
| 72 | - navigator.geolocation.getCurrentPosition(showLocation, errorHandler, options); | ||
| 73 | - } else { | ||
| 74 | - alert("GPS_추적이 불가합니다."); | ||
| 75 | - gps_use = false; | ||
| 76 | - } | ||
| 77 | - } | ||
| 78 | - | ||
| 79 | - | ||
| 80 | - // gps 이용 가능 시, 위도와 경도를 반환하는 showlocation함수. | ||
| 81 | - function showLocation(position) { | ||
| 82 | - gps_use = true; | ||
| 83 | - gps_lat = position.coords.latitude; | ||
| 84 | - gps_lng = position.coords.longitude; | ||
| 85 | - } | ||
| 86 | - | ||
| 87 | - | ||
| 88 | - // error발생 시 에러의 종류를 알려주는 함수. | ||
| 89 | - function errorHandler(error) { | ||
| 90 | - if(error.code == 1) { | ||
| 91 | - alert("접근차단"); | ||
| 92 | - } else if( err.code == 2) { | ||
| 93 | - alert("위치를 반환할 수 없습니다."); | ||
| 94 | - } | ||
| 95 | - gps_use = false; | ||
| 96 | - } | ||
| 97 | - | ||
| 98 | - function gps_tracking(){ | ||
| 99 | - if (gps_use) { | ||
| 100 | - map.panTo(new kakao.maps.LatLng(gps_lat,gps_lng)); | ||
| 101 | - var gps_content = '<div><img class="pulse" draggable="false" unselectable="on" src="https://ssl.pstatic.net/static/maps/m/pin_rd.png" alt=""></div>'; | ||
| 102 | - var currentOverlay = new kakao.maps.CustomOverlay({ | ||
| 103 | - position: new kakao.maps.LatLng(gps_lat,gps_lng), | ||
| 104 | - content: gps_content, | ||
| 105 | - map: map | ||
| 106 | - }); | ||
| 107 | - currentOverlay.setMap(map); | ||
| 108 | - } else { | ||
| 109 | - alert("접근차단하신 경우 새로고침, 아닌 경우 잠시만 기다려주세요."); | ||
| 110 | - gps_check(); | ||
| 111 | - } | ||
| 112 | - } | ||
| 113 | - | ||
| 114 | - | ||
| 115 | - // 지도에 마커와 인포윈도우를 표시하는 함수입니다 | ||
| 116 | - function displayMarker(locPosition, message) { | ||
| 117 | - // 마커를 생성합니다 | ||
| 118 | - var marker = new kakao.maps.Marker({ | ||
| 119 | - map: map, | ||
| 120 | - position: locPosition | ||
| 121 | - }); | ||
| 122 | - var iwContent = message, // 인포윈도우에 표시할 내용 | ||
| 123 | - iwRemoveable = true; | ||
| 124 | - | ||
| 125 | - // 인포윈도우를 생성합니다 | ||
| 126 | - var infowindow = new kakao.maps.InfoWindow({ | ||
| 127 | - content : iwContent, | ||
| 128 | - removable : iwRemoveable | ||
| 129 | - }); | ||
| 130 | - | ||
| 131 | - // 인포윈도우를 마커위에 표시합니다 | ||
| 132 | - infowindow.open(map, marker); | ||
| 133 | - | ||
| 134 | - // 지도 중심좌표를 접속위치로 변경합니다 | ||
| 135 | - map.setCenter(locPosition); | ||
| 136 | - } | ||
| 137 | - | ||
| 138 | - </script> | ||
| 139 | -</body> | ||
| 140 | -</html> | ||
| ... | \ No newline at end of file | ... | \ No newline at end of file |
server.js
0 → 100644
| 1 | +const express = require("express"); | ||
| 2 | +const fs = require("fs"); | ||
| 3 | +const path = require("path"); | ||
| 4 | +const HTTPS = require("https"); | ||
| 5 | + | ||
| 6 | +const app = express(); | ||
| 7 | +const domain = "2020105619.oss2021.tk"; | ||
| 8 | +const sslport = 8080; | ||
| 9 | + | ||
| 10 | +app.use(express.static(path.join(__dirname, "kakao"))); | ||
| 11 | +app.use(express.static(path.join(__dirname, "public"))); | ||
| 12 | + | ||
| 13 | +app.get("/", function (req, res) { | ||
| 14 | + res.sendFile(path.join(__dirname + "/main.html")); | ||
| 15 | +}); | ||
| 16 | + | ||
| 17 | +app.get("/geolocation", function (req, res) { | ||
| 18 | + res.sendFile(path.join(__dirname + "/kakao/kakaomap.html")); | ||
| 19 | +}); | ||
| 20 | + | ||
| 21 | +try { | ||
| 22 | + const option = { | ||
| 23 | + ca: fs.readFileSync("/etc/letsencrypt/live/" + domain + "/fullchain.pem"), | ||
| 24 | + key: fs | ||
| 25 | + .readFileSync( | ||
| 26 | + path.resolve( | ||
| 27 | + process.cwd(), | ||
| 28 | + "/etc/letsencrypt/live/" + domain + "/privkey.pem" | ||
| 29 | + ), | ||
| 30 | + "utf8" | ||
| 31 | + ) | ||
| 32 | + .toString(), | ||
| 33 | + cert: fs | ||
| 34 | + .readFileSync( | ||
| 35 | + path.resolve( | ||
| 36 | + process.cwd(), | ||
| 37 | + "/etc/letsencrypt/live/" + domain + "/cert.pem" | ||
| 38 | + ), | ||
| 39 | + "utf8" | ||
| 40 | + ) | ||
| 41 | + .toString(), | ||
| 42 | + }; | ||
| 43 | + | ||
| 44 | + HTTPS.createServer(option, app).listen(sslport, () => { | ||
| 45 | + console.log(`[HTTPS] Server is started on port ${sslport}`); | ||
| 46 | + }); | ||
| 47 | +} catch (error) { | ||
| 48 | + console.log( | ||
| 49 | + "[HTTPS] HTTPS 오류가 발생하였습니다. HTTPS 서버는 실행되지 않습니다." | ||
| 50 | + ); | ||
| 51 | + console.log(error); | ||
| 52 | +} |
-
Please register or login to post a comment