지창언

It is updated for marker to be set in map,

...@@ -12,8 +12,183 @@ ...@@ -12,8 +12,183 @@
12 <link href="https://cdn.jsdelivr.net/npm/bootstrap-icons@1.5.0/font/bootstrap-icons.css" rel="stylesheet" /> 12 <link href="https://cdn.jsdelivr.net/npm/bootstrap-icons@1.5.0/font/bootstrap-icons.css" rel="stylesheet" />
13 <!-- Core theme CSS (includes Bootstrap)--> 13 <!-- Core theme CSS (includes Bootstrap)-->
14 <link href="css/styles.css" rel="stylesheet" /> 14 <link href="css/styles.css" rel="stylesheet" />
15 + <script type="text/javascript" src="//dapi.kakao.com/v2/maps/sdk.js?appkey=c71c02e15245260c3350614980ba87c8&libraries=services,clusterer,drawing"></script>
16 + <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.0/jquery.min.js"></script>
17 + <script>
18 + // 고속도로 선택 함수
19 + function showline(lineNumber){
20 + // 이 위치에 이전에 켜져있는 map을 지우는 기능 넣어야해 ...
21 + var container = document.getElementById('map'); //지도를 담을 영역의 DOM 레퍼런스
22 +
23 + var options = { //지도를 생성할 때 필요한 기본 옵션
24 + center: new kakao.maps.LatLng(36.137944,128.044905), //지도의 중심좌표.
25 + level: 13 //지도의 레벨(확대, 축소 정도)
26 + };
27 + var map = new kakao.maps.Map(container, options); //지도 생성 및 객체 리턴
28 + line = []
29 +
30 + //csv 파일에서 이정 좌표 가져와서 line 변수에 저장
31 + $.ajax({
32 + url: 'data.csv',
33 + dataType: 'text',
34 + async: false,
35 + success: function(data){
36 + var allRows = data.split(/\r?\n|\r/);
37 +
38 + for (var singleRow = 0; singleRow < allRows.length; singleRow++) {
39 + var rowCells = allRows[singleRow].split(',');
40 + if(rowCells[0] == lineNumber){
41 + line.push(new kakao.maps.LatLng(rowCells[3],rowCells[4]))
42 + }
43 + }
44 + }
45 + });
46 + var polyline = new kakao.maps.Polyline({
47 + path: line, // 선을 구성하는 좌표배열 입니다
48 + strokeWeight: 5, // 선의 두께 입니다
49 + strokeColor: '#FF4500', // 선의 색깔입니다
50 + strokeOpacity: 0.7, // 선의 불투명도 입니다 1에서 0 사이의 값이며 0에 가까울수록 투명합니다
51 + strokeStyle: 'solid' // 선의 스타일입니다
52 + });
53 + polyline.setMap(map)
54 +
55 +
56 +
57 + // 1번 페이지
58 + $.ajax({
59 + url: "http://data.ex.co.kr/openapi/business/conveniServiceArea?key=1817997939&type=json&numOfRows=99&pageNo=1",
60 + success: function(data){
61 + var userData = JSON.stringify(data);
62 + var result_str="";
63 + var routeCode = "";
64 + var svarAddr = "";
65 + var count = data["list"].length;
66 +
67 + for (var i =0; i<count; i++){
68 + routeCode = JSON.stringify(data["list"][i]["routeCode"]);
69 + svarAddr = JSON.stringify(data["list"][i]["svarAddr"]);
70 + if(routeCode.substring(1,5) === lineNumber){
71 + document.getElementById("testArea").innerHTML += routeCode.substring(1,5)+ " ";
72 + var geocoder = new kakao.maps.services.Geocoder();
73 +
74 + // 주소로 좌표를 검색합니다
75 + geocoder.addressSearch(svarAddr, function(result, status) {
76 +
77 + // 정상적으로 검색이 완료됐으면
78 + if (status === kakao.maps.services.Status.OK) {
79 +
80 + var coords = new kakao.maps.LatLng(result[0].y, result[0].x);
81 +
82 + // 결과값으로 받은 위치를 마커로 표시합니다
83 + var marker = new kakao.maps.Marker({
84 + map: map,
85 + position: coords
86 + });
87 +
88 + // 인포윈도우로 장소에 대한 설명을 표시합니다
89 + var infowindow = new kakao.maps.InfoWindow({
90 + content: '<div style="width:150px;text-align:center;padding:6px 0;" id ="position_ex"></div>'
91 + });
92 + document.getElementById("position_ex").innerHTML = svarAddr;
93 + infowindow.open(map, marker);
94 + }
95 + });
96 + }
97 +
98 + }
99 + },
100 + })
101 + // 2번 페이지
102 + $.ajax({
103 + url: "http://data.ex.co.kr/openapi/business/conveniServiceArea?key=1817997939&type=json&numOfRows=99&pageNo=2",
104 + success: function(data){
105 + var userData = JSON.stringify(data);
106 + var result_str="";
107 + var routeCode = "";
108 + var svarAddr = "";
109 + var count = data["list"].length;
110 +
111 + for (var i =0; i<count; i++){
112 + routeCode = JSON.stringify(data["list"][i]["routeCode"]);
113 + svarAddr = JSON.stringify(data["list"][i]["svarAddr"]);
114 + if(routeCode.substring(1,5) === lineNumber){
115 + document.getElementById("testArea").innerHTML += routeCode.substring(1,5)+ " ";
116 + var geocoder = new kakao.maps.services.Geocoder();
117 +
118 + // 주소로 좌표를 검색합니다
119 + geocoder.addressSearch(svarAddr, function(result, status) {
120 +
121 + // 정상적으로 검색이 완료됐으면
122 + if (status === kakao.maps.services.Status.OK) {
123 +
124 + var coords = new kakao.maps.LatLng(result[0].y, result[0].x);
125 +
126 + // 결과값으로 받은 위치를 마커로 표시합니다
127 + var marker = new kakao.maps.Marker({
128 + map: map,
129 + position: coords
130 + });
131 +
132 + // 인포윈도우로 장소에 대한 설명을 표시합니다
133 + var infowindow = new kakao.maps.InfoWindow({
134 + content: '<div style="width:150px;text-align:center;padding:6px 0;" id ="position"></div>'
135 + });
136 + document.getElementById("position").innerHTML = svarAddr;
137 + infowindow.open(map, marker);
138 + }
139 + });
140 + }
141 +
142 + }
143 + },
144 + })
145 + // 3번 페이지
146 + $.ajax({
147 + url: "http://data.ex.co.kr/openapi/business/conveniServiceArea?key=1817997939&type=json&numOfRows=99&pageNo=3",
148 + success: function(data){
149 + var userData = JSON.stringify(data);
150 + var result_str="";
151 + var routeCode = "";
152 + var svarAddr = "";
153 + var count = data["list"].length;
154 +
155 + for (var i =0; i<count; i++){
156 + routeCode = JSON.stringify(data["list"][i]["routeCode"]);
157 + svarAddr = JSON.stringify(data["list"][i]["svarAddr"]);
158 + if(routeCode.substring(1,5) === lineNumber){
159 + document.getElementById("testArea").innerHTML += routeCode.substring(1,5)+ " ";
160 + var geocoder = new kakao.maps.services.Geocoder();
161 +
162 + // 주소로 좌표를 검색합니다
163 + geocoder.addressSearch(svarAddr, function(result, status) {
164 +
165 + // 정상적으로 검색이 완료됐으면
166 + if (status === kakao.maps.services.Status.OK) {
15 167
168 + var coords = new kakao.maps.LatLng(result[0].y, result[0].x);
16 169
170 + // 결과값으로 받은 위치를 마커로 표시합니다
171 + var marker = new kakao.maps.Marker({
172 + map: map,
173 + position: coords
174 + });
175 +
176 + // 인포윈도우로 장소에 대한 설명을 표시합니다
177 + var infowindow = new kakao.maps.InfoWindow({
178 + content: '<div style="width:150px;text-align:center;padding:6px 0;" id ="position"></div>'
179 + });
180 + document.getElementById("position").innerHTML = svarAddr;
181 + infowindow.open(map, marker);
182 + }
183 + });
184 + }
185 +
186 + }
187 + },
188 + })
189 +
190 + }
191 + </script>
17 </head> 192 </head>
18 <body class="d-flex flex-column h-100"> 193 <body class="d-flex flex-column h-100">
19 <main class="flex-shrink-0"> 194 <main class="flex-shrink-0">
...@@ -57,51 +232,20 @@ ...@@ -57,51 +232,20 @@
57 <p class="lead fw-normal text-white-50 mb-4">적당히 텍스트 삽입</p> 232 <p class="lead fw-normal text-white-50 mb-4">적당히 텍스트 삽입</p>
58 <div class="dropdown"> 233 <div class="dropdown">
59 <button class ="btn btn-primary dropdown-toggle " data-bs-toggle="dropdown"> 234 <button class ="btn btn-primary dropdown-toggle " data-bs-toggle="dropdown">
60 - 휴게소 선택 235 + 고속도로 선택
61 </button> 236 </button>
62 <div class ="dropdown-menu"> 237 <div class ="dropdown-menu">
63 <a class="dropdown-item" onclick="showline('0010')">경부선</a> 238 <a class="dropdown-item" onclick="showline('0010')">경부선</a>
64 - <a class="dropdown-item" onclick="showline('0600')">서울양양</a> 239 + <a class="dropdown-item" onclick="showline('0550')">중앙</a>
65 - <a class="dropdown-item" onclick="showline('0450')">중부내륙</a> 240 + <a class="dropdown-item" onclick="showline('0500')">영동</a>
66 </div> 241 </div>
67 </div> 242 </div>
68 </div> 243 </div>
69 </div> 244 </div>
70 245
71 <div id="map" style="width:600px;height:400px;"></div> 246 <div id="map" style="width:600px;height:400px;"></div>
72 - <script type="text/javascript" src="//dapi.kakao.com/v2/maps/sdk.js?appkey=c71c02e15245260c3350614980ba87c8"></script>
73 - <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.0/jquery.min.js"></script>
74 - <script>
75 - var x;
76 - var y;
77 -
78 - // 경로 생성
79 - var linepath = []
80 - // 아래 함수는 10번 고속도로의 모든 이정표의 x,y 좌표값을 linepath 변수에 저장
81 - $.ajax({
82 - url: 'data.csv',
83 - dataType: 'text',
84 - async: false,
85 - success: function(data){
86 - var allRows = data.split(/\r?\n|\r/);
87 -
88 - for (var singleRow = 0; singleRow < allRows.length; singleRow++) {
89 - var rowCells = allRows[singleRow].split(',');
90 - if(rowCells[0] == '0010'){
91 - linepath.push(new kakao.maps.LatLng(rowCells[3],rowCells[4]))
92 - }
93 - }
94 - var rowCells = allRows[1].split(',');
95 - //linepath.append(new kakao.maps.LatLng(rowCells[3],rowCells[4]))
96 - x = rowCells[3]
97 - y = rowCells[4]
98 - $('#testArea').append(x)
99 -
100 - }
101 - });
102 - //linepath.append(new kakao.maps.LatLng())
103 -
104 247
248 + <script>
105 var container = document.getElementById('map'); //지도를 담을 영역의 DOM 레퍼런스 249 var container = document.getElementById('map'); //지도를 담을 영역의 DOM 레퍼런스
106 250
107 var options = { //지도를 생성할 때 필요한 기본 옵션 251 var options = { //지도를 생성할 때 필요한 기본 옵션
...@@ -110,51 +254,34 @@ ...@@ -110,51 +254,34 @@
110 }; 254 };
111 var map = new kakao.maps.Map(container, options); //지도 생성 및 객체 리턴 255 var map = new kakao.maps.Map(container, options); //지도 생성 및 객체 리턴
112 256
257 + // 마커표시
258 + var geocoder = new kakao.maps.services.Geocoder();
113 259
260 + // 휴게소 주소 입력시, 마커 표시 및 이동
261 + geocoder.addressSearch('경기도 용인시 고림동9', function(result, status) {
262 + // 정상적으로 검색이 완료됐으면
114 263
115 - var polyline = new kakao.maps.Polyline({ 264 + if (status === kakao.maps.services.Status.OK) {
116 - path: linepath, // 선을 구성하는 좌표배열 입니다
117 - strokeWeight: 5, // 선의 두께 입니다
118 - strokeColor: '#FF4500', // 선의 색깔입니다
119 - strokeOpacity: 0.7, // 선의 불투명도 입니다 1에서 0 사이의 값이며 0에 가까울수록 투명합니다
120 - strokeStyle: 'solid' // 선의 스타일입니다
121 - });
122 265
123 - polyline.setMap(map) 266 + var coords = new kakao.maps.LatLng(result[0].y, result[0].x);
124 267
125 - function showline(lineNumber){ 268 + // 결과값으로 받은 위치를 마커로 표시합니다
126 - var container = document.getElementById('map'); //지도를 담을 영역의 DOM 레퍼런스 269 + var marker = new kakao.maps.Marker({
270 + map: map,
271 + position: coords
272 + });
127 273
128 - var options = { //지도를 생성할 때 필요한 기본 옵션 274 + // 지도의 중심을 결과값으로 받은 위치로 이동시킵니다
129 - center: new kakao.maps.LatLng(36.137944,128.044905), //지도의 중심좌표. 275 + map.setLevel(4);
130 - level: 13 //지도의 레벨(확대, 축소 정도) 276 + map.setCenter(new kakao.maps.LatLng(result[0].y, result[0].x));
131 - };
132 - var map = new kakao.maps.Map(container, options); //지도 생성 및 객체 리턴
133 - line = []
134 - $.ajax({
135 - url: 'data.csv',
136 - dataType: 'text',
137 - async: false,
138 - success: function(data){
139 - var allRows = data.split(/\r?\n|\r/);
140 277
141 - for (var singleRow = 0; singleRow < allRows.length; singleRow++) {
142 - var rowCells = allRows[singleRow].split(',');
143 - if(rowCells[0] == lineNumber){
144 - line.push(new kakao.maps.LatLng(rowCells[3],rowCells[4]))
145 - }
146 } 278 }
147 - }
148 - });
149 - var polyline = new kakao.maps.Polyline({
150 - path: line, // 선을 구성하는 좌표배열 입니다
151 - strokeWeight: 5, // 선의 두께 입니다
152 - strokeColor: '#FF4500', // 선의 색깔입니다
153 - strokeOpacity: 0.7, // 선의 불투명도 입니다 1에서 0 사이의 값이며 0에 가까울수록 투명합니다
154 - strokeStyle: 'solid' // 선의 스타일입니다
155 }); 279 });
156 - polyline.setMap(map) 280 +
157 - } 281 +
282 +
283 +
284 +
158 </script> 285 </script>
159 </div> 286 </div>
160 </div> 287 </div>
......