Showing
4 changed files
with
157 additions
and
328 deletions
whereur/ExpressIC.json
0 → 100644
This diff could not be displayed because it is too large.
... | @@ -16,11 +16,16 @@ const TOKEN = 'sqNjA99TptppqvcoVFAnU7Kawsl+s7l+JgnZ7r2is97qrFQraIn0sLQ6mTsIPvXLG | ... | @@ -16,11 +16,16 @@ const TOKEN = 'sqNjA99TptppqvcoVFAnU7Kawsl+s7l+JgnZ7r2is97qrFQraIn0sLQ6mTsIPvXLG |
16 | const domain = "www.chyoss.tk" | 16 | const domain = "www.chyoss.tk" |
17 | const sslport = 23023; | 17 | const sslport = 23023; |
18 | 18 | ||
19 | -const buffer = fs.readFileSync('./whereur/Expressfee.json'); | 19 | +const feebuffer = fs.readFileSync('./whereur/Expressfee.json'); |
20 | -const datafeejson = buffer.toString(); | 20 | +const datafeejson = feebuffer.toString(); |
21 | const feedata = JSON.parse(datafeejson); | 21 | const feedata = JSON.parse(datafeejson); |
22 | console.log("Expressfee.json 파일 읽기"); | 22 | console.log("Expressfee.json 파일 읽기"); |
23 | 23 | ||
24 | +const namebuffer = fs.roadFileSync('./whereur/ExpressIC.json'); | ||
25 | +const datanamejson = namebuffer.toString(); | ||
26 | +const namedata = JSON.parse(datanamejson); | ||
27 | +console.log("Expressname.json 파일 열기"); | ||
28 | + | ||
24 | 29 | ||
25 | 30 | ||
26 | 31 | ||
... | @@ -51,11 +56,6 @@ router.route('/process/maprealtime').get(function(req, res){ | ... | @@ -51,11 +56,6 @@ router.route('/process/maprealtime').get(function(req, res){ |
51 | }); | 56 | }); |
52 | 57 | ||
53 | 58 | ||
54 | -router.route('/process/maprealtime').get(function(req, res){ | ||
55 | - console.log('process/mapreatime 호출됨'); | ||
56 | - res.end(); | ||
57 | -}); | ||
58 | - | ||
59 | router.route('/process/construction').get(function(req, res){ | 59 | router.route('/process/construction').get(function(req, res){ |
60 | console.log('process/maprealconstruction 호출됨'); | 60 | console.log('process/maprealconstruction 호출됨'); |
61 | res.end(); | 61 | res.end(); |
... | @@ -184,6 +184,16 @@ function isroadnumber(typetext){ | ... | @@ -184,6 +184,16 @@ function isroadnumber(typetext){ |
184 | } | 184 | } |
185 | } | 185 | } |
186 | 186 | ||
187 | +function isroadname(typetext){ | ||
188 | + if(typetext == '나들목정보'){ | ||
189 | + return true; | ||
190 | + } | ||
191 | + else{ | ||
192 | + return false; | ||
193 | + } | ||
194 | +} | ||
195 | + | ||
196 | + | ||
187 | function inputroadnumber(typetext){ | 197 | function inputroadnumber(typetext){ |
188 | if(typetext.indexOf("번") >= 0){ | 198 | if(typetext.indexOf("번") >= 0){ |
189 | return true; | 199 | return true; |
... | @@ -192,6 +202,15 @@ function inputroadnumber(typetext){ | ... | @@ -192,6 +202,15 @@ function inputroadnumber(typetext){ |
192 | return false; | 202 | return false; |
193 | } | 203 | } |
194 | } | 204 | } |
205 | +function israodnameExist(typetext){ | ||
206 | + if(typetext.indexOf('검색') >= 0){ | ||
207 | + return true; | ||
208 | + } | ||
209 | + else{ | ||
210 | + return false; | ||
211 | + } | ||
212 | +} | ||
213 | + | ||
195 | 214 | ||
196 | function pushmsg(eventObj){ | 215 | function pushmsg(eventObj){ |
197 | console.log(eventObj.source.userId); | 216 | console.log(eventObj.source.userId); |
... | @@ -235,7 +254,7 @@ function pushmsg(eventObj){ | ... | @@ -235,7 +254,7 @@ function pushmsg(eventObj){ |
235 | usercount[eventObj.source.userId] = (usercount[eventObj.source.userId] + 5); | 254 | usercount[eventObj.source.userId] = (usercount[eventObj.source.userId] + 5); |
236 | } | 255 | } |
237 | } | 256 | } |
238 | -function wanttokownfee(typetext){ | 257 | +function wanttoknowfee(typetext){ |
239 | if(typetext.indexOf("-") >= 0){ | 258 | if(typetext.indexOf("-") >= 0){ |
240 | return true; | 259 | return true; |
241 | } | 260 | } |
... | @@ -255,13 +274,19 @@ app.post('/hook', function (req, res) { | ... | @@ -255,13 +274,19 @@ app.post('/hook', function (req, res) { |
255 | var isforecast; | 274 | var isforecast; |
256 | var isselecttypeforecast; | 275 | var isselecttypeforecast; |
257 | var isfindroad; | 276 | var isfindroad; |
277 | + var isroadname; | ||
258 | var istypeforecast; | 278 | var istypeforecast; |
259 | var isinputnumber; | 279 | var isinputnumber; |
280 | + var isinputroadname; | ||
260 | var eventObj = req.body.events[0]; | 281 | var eventObj = req.body.events[0]; |
261 | var source = eventObj.source; | 282 | var source = eventObj.source; |
262 | var message = eventObj.message; | 283 | var message = eventObj.message; |
263 | var isnext; | 284 | var isnext; |
264 | var isfee; | 285 | var isfee; |
286 | + var istime; | ||
287 | + | ||
288 | + | ||
289 | + | ||
265 | // request log | 290 | // request log |
266 | console.log('======================', new Date() ,'======================'); | 291 | console.log('======================', new Date() ,'======================'); |
267 | console.log('[request]', req.body); | 292 | console.log('[request]', req.body); |
... | @@ -284,6 +309,13 @@ app.post('/hook', function (req, res) { | ... | @@ -284,6 +309,13 @@ app.post('/hook', function (req, res) { |
284 | roadnumber(eventObj); | 309 | roadnumber(eventObj); |
285 | } | 310 | } |
286 | 311 | ||
312 | + isroadname = isroadname(message.text); | ||
313 | + if(isroadname == true){ | ||
314 | + console.log("나들목 이름을 궁금해 합니다."); | ||
315 | + roadname(eventObj); | ||
316 | + } | ||
317 | + | ||
318 | + | ||
287 | isforecast = firstforecast(message.text); | 319 | isforecast = firstforecast(message.text); |
288 | if(isforecast){ | 320 | if(isforecast){ |
289 | if(message.text == '1'){ | 321 | if(message.text == '1'){ |
... | @@ -348,11 +380,22 @@ app.post('/hook', function (req, res) { | ... | @@ -348,11 +380,22 @@ app.post('/hook', function (req, res) { |
348 | //console.log(roadnumberstringLength); | 380 | //console.log(roadnumberstringLength); |
349 | } | 381 | } |
350 | 382 | ||
351 | - isfee = wanttokownfee(message.text); | 383 | + isfee = wanttoknowfee(message.text); |
352 | if(isfee == true){ | 384 | if(isfee == true){ |
353 | feelead(eventObj, message.text); | 385 | feelead(eventObj, message.text); |
354 | } | 386 | } |
355 | 387 | ||
388 | + istime = wanttoknowtime(message.text); | ||
389 | + if(istime == true){ | ||
390 | + timelead(eventObj, message.text); | ||
391 | + } | ||
392 | + | ||
393 | + isinputroadname = israodnameExist(message.text); | ||
394 | + if(isinputroadname == true ){ | ||
395 | + isinputroadname(eventObj, message.text); | ||
396 | + | ||
397 | + } | ||
398 | + | ||
356 | res.sendStatus(200); | 399 | res.sendStatus(200); |
357 | }); | 400 | }); |
358 | 401 | ||
... | @@ -376,11 +419,11 @@ function helloworld(eventObj){ | ... | @@ -376,11 +419,11 @@ function helloworld(eventObj){ |
376 | }, | 419 | }, |
377 | { | 420 | { |
378 | "type":"text", | 421 | "type":"text", |
379 | - "text":"현재 교통 예보가 궁금하시다면 1번을, 실시간 교통혼잡 상황을 보실려면 2번을, 실시간 정체상황을 알고 싶다면 3번을, 교통요금이 궁금하시다면 4번을 눌러주세요." | 422 | + "text":"현재 교통 예보가 궁금하시다면 1번을, 실시간 교통혼잡 상황을 보실려면 2번을, 실시간 정체상황을 알고 싶다면 3번을, 교통요금이 궁금하시다면 4번을, 나들목간 평균시간" |
380 | }, | 423 | }, |
381 | { | 424 | { |
382 | "type":"text", | 425 | "type":"text", |
383 | - "text": "노선정보는 '노선정보'를 입력해주세요." | 426 | + "text": "노선정보는 '노선정보'를 입력해주세요., 나들목정보는 '나들목정보' " |
384 | } | 427 | } |
385 | ] | 428 | ] |
386 | } | 429 | } |
... | @@ -757,7 +800,7 @@ function roadnumber(eventObj){ | ... | @@ -757,7 +800,7 @@ function roadnumber(eventObj){ |
757 | }, | 800 | }, |
758 | { | 801 | { |
759 | "type":"text", | 802 | "type":"text", |
760 | - "text":"동서 구간 : 10-남해, 12-무안광주 및 광주대구선, 16-울산선, 20-새만금포항선, 30-당진영덕선, 32-아산청주선, 40-평택제천선, 50-영동선, 52-광주원주선, 60-서울양양선" | 803 | + "text":"동서 구간 : 10-남해선, 12-무안광주 및 광주대구선, 16-울산선, 20-새만금포항선, 30-당진영덕선, 32-아산청주선, 40-평택제천선, 50-영동선, 52-광주원주선, 60-서울양양선" |
761 | }, | 804 | }, |
762 | { | 805 | { |
763 | "type":"text", | 806 | "type":"text", |
... | @@ -774,6 +817,37 @@ function roadnumber(eventObj){ | ... | @@ -774,6 +817,37 @@ function roadnumber(eventObj){ |
774 | }); | 817 | }); |
775 | } | 818 | } |
776 | 819 | ||
820 | +function roadname(eventObj){ | ||
821 | + request.post( | ||
822 | + { | ||
823 | + url: TARGET_URL, | ||
824 | + headers: { | ||
825 | + 'Authorization': `Bearer ${TOKEN}` | ||
826 | + }, | ||
827 | + json: { | ||
828 | + "replyToken":eventObj.replyToken, | ||
829 | + "messages":[ | ||
830 | + { | ||
831 | + "type":"text", | ||
832 | + "text":"나들목 이름이 궁금하시다면 <검색:이름>을 입력해 주세요." | ||
833 | + }, | ||
834 | + { | ||
835 | + "type":"text", | ||
836 | + "text":"예) 검색:서안동" | ||
837 | + }, | ||
838 | + { | ||
839 | + "type":"text", | ||
840 | + "test":"예) 검색:안동" | ||
841 | + } | ||
842 | + ] | ||
843 | + } | ||
844 | + },(error, response, body) => { | ||
845 | + console.log(body) | ||
846 | + }); | ||
847 | +} | ||
848 | + | ||
849 | + | ||
850 | + | ||
777 | function tieupselect(eventObj){ | 851 | function tieupselect(eventObj){ |
778 | request.post( | 852 | request.post( |
779 | { | 853 | { |
... | @@ -807,6 +881,46 @@ function tieupselect(eventObj){ | ... | @@ -807,6 +881,46 @@ function tieupselect(eventObj){ |
807 | }); | 881 | }); |
808 | } | 882 | } |
809 | 883 | ||
884 | +function isinputroadname(eventObj, msg){ | ||
885 | + var icnamelist = new Array(); | ||
886 | + var iclist = ""; | ||
887 | + var ExpressICnameLength = namedata.length; | ||
888 | + var icnamelist = msg.split(':'); | ||
889 | + var isthat = false; | ||
890 | + var iscout = 0; | ||
891 | + for(var i = 0; i < ExpressICnameLength; i++){ | ||
892 | + if(namedata.unitLists[i].unitName.indexOf(icnamelist[1]) >= 0 ){ | ||
893 | + isthat = true; | ||
894 | + iclist = "#" + str(iscount) + " " + namedata.unitLists[i].unitName + " "; | ||
895 | + } | ||
896 | + } | ||
897 | + | ||
898 | + request.post( | ||
899 | + { | ||
900 | + url: TARGET_URL, | ||
901 | + headers: { | ||
902 | + 'Authorization': `Bearer ${TOKEN}` | ||
903 | + }, | ||
904 | + json: { | ||
905 | + "replyToken":eventObj.replyToken, | ||
906 | + "messages":[ | ||
907 | + { | ||
908 | + "type":"text", | ||
909 | + "text":"검색결과입니다. : " + msg | ||
910 | + } | ||
911 | + | ||
912 | + ] | ||
913 | + } | ||
914 | + },(error, response, body) => { | ||
915 | + console.log(body) | ||
916 | + }); | ||
917 | + | ||
918 | + | ||
919 | +} | ||
920 | + | ||
921 | + | ||
922 | + | ||
923 | + | ||
810 | function roadcongest(eventObj, msg, userid){ | 924 | function roadcongest(eventObj, msg, userid){ |
811 | //jsoncongest의 routeNo는 앞의 세자리가 노선 번호, 마지막 숫자가 제1 중부내륙, 제2 중부내륙 처럼 노선번호는 같으나 노선의 경로가 다른 경우를 나타내며, 혹은 구간구간 개통된 고속도로를 구분지을 때도 구별용으로 사용됨으로 필요가 없음. | 925 | //jsoncongest의 routeNo는 앞의 세자리가 노선 번호, 마지막 숫자가 제1 중부내륙, 제2 중부내륙 처럼 노선번호는 같으나 노선의 경로가 다른 경우를 나타내며, 혹은 구간구간 개통된 고속도로를 구분지을 때도 구별용으로 사용됨으로 필요가 없음. |
812 | jsoncongest(function(object){ | 926 | jsoncongest(function(object){ |
... | @@ -850,6 +964,37 @@ function roadcongest(eventObj, msg, userid){ | ... | @@ -850,6 +964,37 @@ function roadcongest(eventObj, msg, userid){ |
850 | userroadcongest[userid] = roadnumberstring; | 964 | userroadcongest[userid] = roadnumberstring; |
851 | userroadcongestlength[userid] = roadnumberstringLength; | 965 | userroadcongestlength[userid] = roadnumberstringLength; |
852 | usercount[userid] = 0; | 966 | usercount[userid] = 0; |
967 | + | ||
968 | + | ||
969 | + | ||
970 | + request.post( | ||
971 | + { | ||
972 | + url: TARGET_URL, | ||
973 | + headers: { | ||
974 | + 'Authorization': `Bearer ${TOKEN}` | ||
975 | + }, | ||
976 | + json: { | ||
977 | + "replyToken":eventObj.replyToken, | ||
978 | + "messages":[ | ||
979 | + { | ||
980 | + "type":"text", | ||
981 | + "text":"검색하신 노선에서 발견된 정체량은 총 " + str(userroadcongestlength[userid]) + "입니다." | ||
982 | + }, | ||
983 | + { | ||
984 | + "type":"text", | ||
985 | + "text":"계속해서 보실려면 '다음'을 입력해 주세요." | ||
986 | + }, | ||
987 | + { | ||
988 | + "type":"text", | ||
989 | + "text":"마지막 항목이 나올때까지 계속해서 '다음'을 입력해 주세요." | ||
990 | + } | ||
991 | + | ||
992 | + ] | ||
993 | + } | ||
994 | + },(error, response, body) => { | ||
995 | + console.log(body) | ||
996 | + }); | ||
997 | + | ||
853 | } | 998 | } |
854 | 999 | ||
855 | if(roadnumberstringLength == 0){ | 1000 | if(roadnumberstringLength == 0){ |
... | @@ -948,57 +1093,6 @@ function feelead(eventObj, msg){ | ... | @@ -948,57 +1093,6 @@ function feelead(eventObj, msg){ |
948 | } | 1093 | } |
949 | } | 1094 | } |
950 | 1095 | ||
951 | -// var url3 = 'http://data.ex.co.kr/openapi/trafficapi/trafficAll'; | ||
952 | -// var queryParams3 = '?' + encodeURIComponent('key') + '=4365330273'; /* Service Key*/ | ||
953 | -// queryParams3 += '&' + encodeURIComponent('type') + '=' + encodeURIComponent('json'); /* */ | ||
954 | - | ||
955 | -// request({ | ||
956 | -// url: url3 + queryParams3, | ||
957 | -// method: 'GET' | ||
958 | - | ||
959 | -// }, function (error, response, body) { | ||
960 | -// console.log('Status', response.statusCode); | ||
961 | -// console.log('Headers', JSON.stringify(response.headers)); | ||
962 | -// console.log('Reponse received', body); | ||
963 | -// var obj = JSON.parse(body); | ||
964 | -// console.log(obj); | ||
965 | -// console.log(obj.trafficAll[0]); | ||
966 | -// }); | ||
967 | - | ||
968 | - | ||
969 | -// var url4 = 'http://data.ex.co.kr/openapi/trafficapi/trafficRegion'; | ||
970 | -// var queryParams4 = '?' + encodeURIComponent('key') + '=4365330273'; /* Service Key*/ | ||
971 | -// queryParams4 += '&' + encodeURIComponent('type') + '=' + encodeURIComponent('json'); /* */ | ||
972 | - | ||
973 | -// request({ | ||
974 | -// url: url4 + queryParams4, | ||
975 | -// method: 'GET' | ||
976 | - | ||
977 | -// }, function (error, response, body) { | ||
978 | -// console.log('Status', response.statusCode); | ||
979 | -// console.log('Headers', JSON.stringify(response.headers)); | ||
980 | -// console.log('Reponse received', body); | ||
981 | -// var obj = JSON.parse(body); | ||
982 | -// console.log(obj); | ||
983 | -// console.log(obj.trafficRegion[0]); | ||
984 | -// }); | ||
985 | - | ||
986 | -// var url5 = 'http://data.ex.co.kr/openapi/business/conveniServiceArea'; | ||
987 | -// var queryParams5 = '?' + encodeURIComponent('key') + '=4365330273'; /* Service Key*/ | ||
988 | -// queryParams5 += '&' + encodeURIComponent('type') + '=' + encodeURIComponent('json'); /* */ | ||
989 | - | ||
990 | -// request({ | ||
991 | -// url: url5 + queryParams5, | ||
992 | -// method: 'GET' | ||
993 | - | ||
994 | -// }, function (error, response, body) { | ||
995 | -// console.log('Status', response.statusCode); | ||
996 | -// console.log('Headers', JSON.stringify(response.headers)); | ||
997 | -// console.log('Reponse received', body); | ||
998 | -// var obj = JSON.parse(body); | ||
999 | -// console.log(obj); | ||
1000 | -// console.log(obj.list[0]); | ||
1001 | -// }); | ||
1002 | 1096 | ||
1003 | 1097 | ||
1004 | 1098 | ... | ... |
whereur/public/construction.html
deleted
100644 → 0
1 | -<!doctype html> | ||
2 | -<html lang="ko"> | ||
3 | -<head> | ||
4 | -<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> | ||
5 | -<meta name="viewport" content="initial-scale=1.0, user-scalable=no" /> | ||
6 | -<title>실시간 공사정보</title> | ||
7 | -<style type="text/css"> | ||
8 | - * { | ||
9 | - font-family:Arial, Verdana, sans-serif, Dotum, Gulim; | ||
10 | - } | ||
11 | - html, body { width:100%; height:100%; } | ||
12 | - body { margin:0; padding:0; } | ||
13 | -</style> | ||
14 | -</head> | ||
15 | -<body> | ||
16 | - <form method="get" action="/process/construction"></form> | ||
17 | - <div id="map" style="width:100%; height:100%;"></div> | ||
18 | -<script type="text/javascript" src="http://code.jquery.com/jquery-1.11.1.min.js"></script> | ||
19 | -<script type="text/javascript" src="http://openapi.its.go.kr/javascript/jquery.xml2json.js"></script> | ||
20 | -<script type="text/javascript" src="http://openlayers.org/api/2.13.1/OpenLayers.js"></script> | ||
21 | -<script type="text/javascript" src="http://openapi.its.go.kr/javascript/OpenLayers.Layer.Vworld.js"></script> | ||
22 | -<script type="text/javascript"> | ||
23 | - var API_DOMAIN = 'http://openapi.its.go.kr'; | ||
24 | - var key = '1590913608992'; | ||
25 | - var NOPOP_LAYERS = []; | ||
26 | - var POPUP_LAYERS = []; | ||
27 | - var EPSG_4326 = new OpenLayers.Projection('EPSG:4326'); | ||
28 | - var EPSG_900913 = new OpenLayers.Projection('EPSG:900913'); | ||
29 | - function getCORSURL(uri, type) { | ||
30 | - var yqlUri = 'http://query.yahooapis.com/v1/public/yql?q=' + | ||
31 | - encodeURIComponent('SELECT * FROM ' + type + ' where url="' + uri + '"'); | ||
32 | - if (type == 'html') { | ||
33 | - yqlUri += encodeURIComponent(' and xpath="/*"'); | ||
34 | - } else if (type == 'json') { | ||
35 | - yqlUri += "&callback=&format=json"; | ||
36 | - } else if (type == 'xml') { | ||
37 | - yqlUri += "&format=xml"; | ||
38 | - } | ||
39 | - return yqlUri; | ||
40 | - } | ||
41 | -</script> | ||
42 | -<script type="text/javascript" src="http://openapi.its.go.kr/javascript/openapi.construction.js"></script> | ||
43 | -<script type="text/javascript"> | ||
44 | - window.onload = init; | ||
45 | - var map; | ||
46 | - function init() { | ||
47 | - // 지도 생성 | ||
48 | - map = new OpenLayers.Map({ | ||
49 | - div: "map", | ||
50 | - projection: EPSG_900913, | ||
51 | - displayProjection: EPSG_4326, | ||
52 | - units: "m", | ||
53 | - maxExtent: new OpenLayers.Bounds(13489539, 3828608, 14943678, 4881604), | ||
54 | - restrictedExtent: new OpenLayers.Bounds(13489539, 3828608, 14943678, 4881604), | ||
55 | - layers: [ | ||
56 | - new OpenLayers.Layer.Vworld_Base('Vworld', {numZoomLevels:17, transitionEffect:''}) | ||
57 | - ], | ||
58 | - controls: [ | ||
59 | - new OpenLayers.Control.Navigation() | ||
60 | - ,new OpenLayers.Control.MousePosition() | ||
61 | - ,new OpenLayers.Control.ScaleLine() | ||
62 | - ,new OpenLayers.Control.PanZoomBar({zoomWorldIcon:true}) | ||
63 | - ,new OpenLayers.Control.LayerSwitcher() | ||
64 | - ,new OpenLayers.Control.OverviewMap({layers:[new OpenLayers.Layer.OSM()], mapOptions:{projection:'EPSG:900913'}, autoPan:true, maximized:true}) | ||
65 | - ] | ||
66 | - }); | ||
67 | - // 지도 레벨 제한 | ||
68 | - map.events.on({ | ||
69 | - "zoomend": function(event) { | ||
70 | - if (map.getZoom() < 7) map.setCenter(map.getCenter(), 7); | ||
71 | - if (map.getZoom() > 14) map.setCenter(map.getCenter(), 14); | ||
72 | - } | ||
73 | - }); | ||
74 | - // 지도 초기 위치 설정 | ||
75 | - map.setCenter(new OpenLayers.LonLat(14217832, 4353272), 7); | ||
76 | - // 공사정보 시작 | ||
77 | - var construction = new Construction('constructionLayer'); | ||
78 | - construction.getList(); | ||
79 | - POPUP_LAYERS.push(construction.getLayer()); | ||
80 | - // 공사정보 종료 | ||
81 | - map.addLayers(NOPOP_LAYERS); | ||
82 | - map.addLayers(POPUP_LAYERS); | ||
83 | - // 아이콘 클릭시 팝업 설정 시작 | ||
84 | - var controlSelect = new OpenLayers.Control.SelectFeature(POPUP_LAYERS, { | ||
85 | - clickout:true, toggle:false, multiple:false, | ||
86 | - onSelect:function(feature){ | ||
87 | - var data = feature.data; | ||
88 | - var message =''; | ||
89 | - switch(feature.layer.id) { | ||
90 | - case 'weatherLayer': | ||
91 | - message += weather.getMessage(data); | ||
92 | - break; | ||
93 | - case 'constructionLayer': | ||
94 | - message += construction.getMessage(data); | ||
95 | - break; | ||
96 | - case 'accidentLayer': | ||
97 | - message += accident.getMessage(data); | ||
98 | - break; | ||
99 | - case 'cctvLayer': | ||
100 | - message += cctv.getMessage(data); | ||
101 | - break; | ||
102 | - case 'warningLayer': | ||
103 | - message += warning.getMessage(data); | ||
104 | - break; | ||
105 | - case 'tourLayer': | ||
106 | - message += tour.getMessage(data); | ||
107 | - break; | ||
108 | - default: | ||
109 | - return false; | ||
110 | - } | ||
111 | - var selectedFeature = feature; | ||
112 | - var popup = new OpenLayers.Popup.FramedCloud("popup", | ||
113 | - feature.geometry.getBounds().getCenterLonLat(), null, | ||
114 | - message, null, true, function(e){controlSelect.unselect(selectedFeature);}); | ||
115 | - popup.minSize = new OpenLayers.Size(200,200); | ||
116 | - popup.maxSize = new OpenLayers.Size(400,400); | ||
117 | - feature.popup = popup; | ||
118 | - map.addPopup(popup); | ||
119 | - }, | ||
120 | - onUnselect:function(feature){ | ||
121 | - map.removePopup(feature.popup); | ||
122 | - feature.popup.destroy(); | ||
123 | - feature.popup = null; | ||
124 | - } | ||
125 | - }); | ||
126 | - map.addControls([controlSelect]); | ||
127 | - controlSelect.activate(); | ||
128 | - // 아이콘 클릭시 팝업 설정 종료 | ||
129 | - } | ||
130 | -</script> | ||
131 | -</body> | ||
132 | -</html> | ||
... | \ No newline at end of file | ... | \ No newline at end of file |
whereur/public/mapcctv.html
deleted
100644 → 0
1 | - | ||
2 | -<!doctype html> | ||
3 | -<html lang="ko"> | ||
4 | -<head> | ||
5 | -<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> | ||
6 | -<meta name="viewport" content="initial-scale=1.0, user-scalable=no" /> | ||
7 | -<title>교통정보 OPEN API</title> | ||
8 | -<style type="text/css"> | ||
9 | - * { | ||
10 | - font-family:Arial, Verdana, sans-serif, Dotum, Gulim; | ||
11 | - } | ||
12 | - html, body { width:100%; height:100%; } | ||
13 | - body { margin:0; padding:0; } | ||
14 | -</style> | ||
15 | -</head> | ||
16 | -<body> | ||
17 | - <form method="get" action="/process/mapcctv"></form> | ||
18 | - <div id="map" style="width:100%; height:100%;"></div> | ||
19 | -<script type="text/javascript" src="http://code.jquery.com/jquery-1.11.1.min.js"></script> | ||
20 | -<script type="text/javascript" src="http://openapi.its.go.kr/javascript/jquery.xml2json.js"></script> | ||
21 | -<script type="text/javascript" src="http://openlayers.org/api/2.13.1/OpenLayers.js"></script> | ||
22 | -<script type="text/javascript" src="http://openapi.its.go.kr/javascript/OpenLayers.Layer.Vworld.js"></script> | ||
23 | -<script type="text/javascript"> | ||
24 | - var API_DOMAIN = 'http://openapi.its.go.kr'; | ||
25 | - var key = '1590913608992'; | ||
26 | - var NOPOP_LAYERS = []; | ||
27 | - var POPUP_LAYERS = []; | ||
28 | - var EPSG_4326 = new OpenLayers.Projection('EPSG:4326'); | ||
29 | - var EPSG_900913 = new OpenLayers.Projection('EPSG:900913'); | ||
30 | - function getCORSURL(uri, type) { | ||
31 | - var yqlUri = 'http://query.yahooapis.com/v1/public/yql?q=' + | ||
32 | - encodeURIComponent('SELECT * FROM ' + type + ' where url="' + uri + '"'); | ||
33 | - if (type == 'html') { | ||
34 | - yqlUri += encodeURIComponent(' and xpath="/*"'); | ||
35 | - } else if (type == 'json') { | ||
36 | - yqlUri += "&callback=&format=json"; | ||
37 | - } else if (type == 'xml') { | ||
38 | - yqlUri += "&format=xml"; | ||
39 | - } | ||
40 | - return yqlUri; | ||
41 | - } | ||
42 | -</script> | ||
43 | -<script type="text/javascript" src="http://openapi.its.go.kr/javascript/openapi.cctv.js"></script> | ||
44 | -<script type="text/javascript"> | ||
45 | - window.onload = init; | ||
46 | - var map; | ||
47 | - function init() { | ||
48 | - // 지도 생성 | ||
49 | - map = new OpenLayers.Map({ | ||
50 | - div: "map", | ||
51 | - projection: EPSG_900913, | ||
52 | - displayProjection: EPSG_4326, | ||
53 | - units: "m", | ||
54 | - maxExtent: new OpenLayers.Bounds(13489539, 3828608, 14943678, 4881604), | ||
55 | - restrictedExtent: new OpenLayers.Bounds(13489539, 3828608, 14943678, 4881604), | ||
56 | - layers: [ | ||
57 | - new OpenLayers.Layer.Vworld_Base('Vworld', {numZoomLevels:17, transitionEffect:''}) | ||
58 | - ], | ||
59 | - controls: [ | ||
60 | - new OpenLayers.Control.Navigation() | ||
61 | - ,new OpenLayers.Control.MousePosition() | ||
62 | - ,new OpenLayers.Control.ScaleLine() | ||
63 | - ,new OpenLayers.Control.PanZoomBar({zoomWorldIcon:true}) | ||
64 | - ,new OpenLayers.Control.LayerSwitcher() | ||
65 | - ,new OpenLayers.Control.OverviewMap({layers:[new OpenLayers.Layer.OSM()], mapOptions:{projection:'EPSG:900913'}, autoPan:true, maximized:true}) | ||
66 | - ] | ||
67 | - }); | ||
68 | - // 지도 레벨 제한 | ||
69 | - map.events.on({ | ||
70 | - "zoomend": function(event) { | ||
71 | - if (map.getZoom() < 7) map.setCenter(map.getCenter(), 7); | ||
72 | - if (map.getZoom() > 14) map.setCenter(map.getCenter(), 14); | ||
73 | - } | ||
74 | - }); | ||
75 | - // 지도 초기 위치 설정 | ||
76 | - map.setCenter(new OpenLayers.LonLat(14217832, 4353272), 7); | ||
77 | - // CCTV 시작 | ||
78 | - var cctv = new CCTV('cctvLayer'); | ||
79 | - cctv.getList(); | ||
80 | - POPUP_LAYERS.push(cctv.getLayer()); | ||
81 | - // CCTV 종료 | ||
82 | - map.addLayers(NOPOP_LAYERS); | ||
83 | - map.addLayers(POPUP_LAYERS); | ||
84 | - // 아이콘 클릭시 팝업 설정 시작 | ||
85 | - var controlSelect = new OpenLayers.Control.SelectFeature(POPUP_LAYERS, { | ||
86 | - clickout:true, toggle:false, multiple:false, | ||
87 | - onSelect:function(feature){ | ||
88 | - var data = feature.data; | ||
89 | - var message =''; | ||
90 | - switch(feature.layer.id) { | ||
91 | - case 'weatherLayer': | ||
92 | - message += weather.getMessage(data); | ||
93 | - break; | ||
94 | - case 'constructionLayer': | ||
95 | - message += construction.getMessage(data); | ||
96 | - break; | ||
97 | - case 'accidentLayer': | ||
98 | - message += accident.getMessage(data); | ||
99 | - break; | ||
100 | - case 'cctvLayer': | ||
101 | - message += cctv.getMessage(data); | ||
102 | - break; | ||
103 | - case 'warningLayer': | ||
104 | - message += warning.getMessage(data); | ||
105 | - break; | ||
106 | - case 'tourLayer': | ||
107 | - message += tour.getMessage(data); | ||
108 | - break; | ||
109 | - default: | ||
110 | - return false; | ||
111 | - } | ||
112 | - var selectedFeature = feature; | ||
113 | - var popup = new OpenLayers.Popup.FramedCloud("popup", | ||
114 | - feature.geometry.getBounds().getCenterLonLat(), null, | ||
115 | - message, null, true, function(e){controlSelect.unselect(selectedFeature);}); | ||
116 | - popup.minSize = new OpenLayers.Size(200,200); | ||
117 | - popup.maxSize = new OpenLayers.Size(400,400); | ||
118 | - feature.popup = popup; | ||
119 | - map.addPopup(popup); | ||
120 | - }, | ||
121 | - onUnselect:function(feature){ | ||
122 | - map.removePopup(feature.popup); | ||
123 | - feature.popup.destroy(); | ||
124 | - feature.popup = null; | ||
125 | - } | ||
126 | - }); | ||
127 | - map.addControls([controlSelect]); | ||
128 | - controlSelect.activate(); | ||
129 | - // 아이콘 클릭시 팝업 설정 종료 | ||
130 | - } | ||
131 | -</script> | ||
132 | -</body> | ||
133 | -</html> | ||
... | \ No newline at end of file | ... | \ No newline at end of file |
-
Please register or login to post a comment