지창언

map api infowindow updated

...@@ -15,7 +15,18 @@ ...@@ -15,7 +15,18 @@
15 <script type="text/javascript" src="//dapi.kakao.com/v2/maps/sdk.js?appkey=c71c02e15245260c3350614980ba87c8&libraries=services,clusterer,drawing"></script> 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> 16 <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.0/jquery.min.js"></script>
17 <script> 17 <script>
18 - 18 + function makeOverListener(map, marker, infowindow) {
19 + return function() {
20 + infowindow.open(map, marker);
21 + };
22 + }
23 +
24 + // 인포윈도우를 닫는 클로저를 만드는 함수입니다
25 + function makeOutListener(infowindow) {
26 + return function() {
27 + infowindow.close();
28 + };
29 + }
19 // 고속도로 선택 함수 30 // 고속도로 선택 함수
20 function showline(lineNumber){ 31 function showline(lineNumber){
21 // 이 위치에 이전에 켜져있는 map을 지우는 기능 넣어야해 ... 32 // 이 위치에 이전에 켜져있는 map을 지우는 기능 넣어야해 ...
...@@ -54,13 +65,14 @@ ...@@ -54,13 +65,14 @@
54 polyline.setMap(map) 65 polyline.setMap(map)
55 66
56 67
57 -
58 var userData; 68 var userData;
59 var markers = []; 69 var markers = [];
60 - 70 + var infos = [];
71 + var routeCodes = [];
72 + var svarAddrs = [];
73 + var rest_names = [];
61 // 1번 페이지 74 // 1번 페이지
62 $.ajax({ 75 $.ajax({
63 -
64 url: "http://data.ex.co.kr/openapi/business/conveniServiceArea?key=1817997939&type=json&numOfRows=99&pageNo=1", 76 url: "http://data.ex.co.kr/openapi/business/conveniServiceArea?key=1817997939&type=json&numOfRows=99&pageNo=1",
65 async:false, 77 async:false,
66 success: function(data){ 78 success: function(data){
...@@ -68,8 +80,6 @@ ...@@ -68,8 +80,6 @@
68 userData = data; 80 userData = data;
69 }, 81 },
70 }).done(function() { 82 }).done(function() {
71 - var infomations =[];
72 - var result_str="";
73 var routeCode = ""; 83 var routeCode = "";
74 var svarAddr = ""; 84 var svarAddr = "";
75 var rest_name = ""; 85 var rest_name = "";
...@@ -82,131 +92,123 @@ ...@@ -82,131 +92,123 @@
82 92
83 if(routeCode.substring(1,5) === lineNumber){ // 고속도로 코드가 같다면 93 if(routeCode.substring(1,5) === lineNumber){ // 고속도로 코드가 같다면
84 94
95 + routeCodes.push(routeCode);
96 + svarAddrs.push(svarAddr);
97 + rest_names.push(rest_name);
85 var geocoder = new kakao.maps.services.Geocoder(); 98 var geocoder = new kakao.maps.services.Geocoder();
86 - // 주소로 좌표를 검색합니다
87 - geocoder.addressSearch(svarAddr, function(result, status) {
88 - // 정상적으로 검색이 완료됐으면
89 - if (status === kakao.maps.services.Status.OK) {
90 - //위치 저장
91 - var coords = new kakao.maps.LatLng(result[0].y, result[0].x);
92 -
93 - var marker = new kakao.maps.Marker({
94 - position: coords,
95 - map: map
96 - });
97 - markers.push(marker); // markers 로 정상적 push 수행 안됨
98 - }
99 - });
100 99
101 } 100 }
102 } 101 }
102 + svarAddrs.forEach(function(addr,index){
103 + geocoder.addressSearch(addr,function(result,status){
104 + if(status === kakao.maps.services.Status.OK){
105 + var coords = new kakao.maps.LatLng(result[0].y, result[0].x);
106 + var marker = new kakao.maps.Marker({
107 + position:coords,
108 + map:map,
109 + })
110 + var infowindow = new kakao.maps.InfoWindow({
111 + content: rest_names[index],
112 + });
113 + kakao.maps.event.addListener(marker, 'mouseover', makeOverListener(map, marker, infowindow));
114 + kakao.maps.event.addListener(marker, 'mouseout', makeOutListener(infowindow));
115 + }
116 + })
117 + })
103 }) 118 })
104 - setTimeout(() => { 119 +
105 - alert(markers.length);
106 - console.dir(markers);
107 - }, 500);
108 - }
109 -
110 - /*
111 // 2번 페이지 120 // 2번 페이지
112 $.ajax({ 121 $.ajax({
113 url: "http://data.ex.co.kr/openapi/business/conveniServiceArea?key=1817997939&type=json&numOfRows=99&pageNo=2", 122 url: "http://data.ex.co.kr/openapi/business/conveniServiceArea?key=1817997939&type=json&numOfRows=99&pageNo=2",
123 + async:false,
114 success: function(data){ 124 success: function(data){
115 - var userData = JSON.stringify(data); 125 + //변수 설정
116 - var result_str=""; 126 + userData = data;
117 - var routeCode = ""; 127 + },
118 - var svarAddr = ""; 128 + }).done(function() {
119 - var rest_name = ""; 129 + var routeCode = "";
120 - var count = data["list"].length; 130 + var svarAddr = "";
131 + var rest_name = "";
132 + var data_count = userData["list"].length // 데이터 개수 얻기
133 +
134 + for (var i =0; i<data_count; i++){
135 + routeCode = JSON.stringify(userData["list"][i]["routeCode"]);
136 + svarAddr = JSON.stringify(userData["list"][i]["svarAddr"]);
137 + rest_name = JSON.stringify(userData["list"][i]["serviceAreaName"]);
121 138
122 - for (var i =0; i<count; i++){ 139 + if(routeCode.substring(1,5) === lineNumber){ // 고속도로 코드가 같다면
123 - routeCode = JSON.stringify(data["list"][i]["routeCode"]); 140 +
124 - svarAddr = JSON.stringify(data["list"][i]["svarAddr"]); 141 + routeCodes.push(routeCode);
125 - rest_name = JSON.stringify(data["list"][i]["serviceAreaName"]); 142 + svarAddrs.push(svarAddr);
126 - var infowindow = new kakao.maps.InfoWindow({ 143 + rest_names.push(rest_name);
127 - content: rest_name 144 + var geocoder = new kakao.maps.services.Geocoder();
128 - });
129 - if(routeCode.substring(1,5) === lineNumber){
130 - document.getElementById("testArea").innerHTML += routeCode.substring(1,5)+ " ";
131 - var geocoder = new kakao.maps.services.Geocoder();
132 -
133 - // 주소로 좌표를 검색합니다
134 - geocoder.addressSearch(svarAddr, function(result, status) {
135 -
136 - // 정상적으로 검색이 완료됐으면
137 - if (status === kakao.maps.services.Status.OK) {
138 -
139 - var coords = new kakao.maps.LatLng(result[0].y, result[0].x);
140 - var temp = i
141 -
142 - // 결과값으로 받은 위치를 마커로 표시합니다
143 - var marker = new kakao.maps.Marker({
144 - map: map,
145 - position: coords,
146 - });
147 -
148 - // 인포윈도우로 장소에 대한 설명을 표시합니다
149 - kakao.maps.event.addListener(marker, 'mouseover', makeOverListener(map, marker, infowindow));
150 - kakao.maps.event.addListener(marker, 'mouseout', makeOutListener(infowindow));
151 - document.getElementById("position_ex").innerHTML = svarAddr;
152 -
153 - }
154 - });
155 - }
156 145
157 } 146 }
158 - }, 147 + }
148 + svarAddrs.forEach(function(addr,index){
149 + geocoder.addressSearch(addr,function(result,status){
150 + if(status === kakao.maps.services.Status.OK){
151 + var coords = new kakao.maps.LatLng(result[0].y, result[0].x);
152 + var marker = new kakao.maps.Marker({
153 + position:coords,
154 + map:map,
155 + })
156 + var infowindow = new kakao.maps.InfoWindow({
157 + content: rest_names[index],
158 + });
159 + kakao.maps.event.addListener(marker, 'mouseover', makeOverListener(map, marker, infowindow));
160 + kakao.maps.event.addListener(marker, 'mouseout', makeOutListener(infowindow));
161 + }
162 + })
163 + })
159 }) 164 })
165 +
160 // 3번 페이지 166 // 3번 페이지
161 $.ajax({ 167 $.ajax({
162 url: "http://data.ex.co.kr/openapi/business/conveniServiceArea?key=1817997939&type=json&numOfRows=99&pageNo=3", 168 url: "http://data.ex.co.kr/openapi/business/conveniServiceArea?key=1817997939&type=json&numOfRows=99&pageNo=3",
169 + async:false,
163 success: function(data){ 170 success: function(data){
164 - var userData = JSON.stringify(data); 171 + //변수 설정
165 - var result_str=""; 172 + userData = data;
166 - var routeCode = ""; 173 + },
167 - var svarAddr = ""; 174 + }).done(function() {
168 - var rest_name = ""; 175 + var routeCode = "";
169 - var count = data["list"].length; 176 + var svarAddr = "";
177 + var rest_name = "";
178 + var data_count = userData["list"].length // 데이터 개수 얻기
179 +
180 + for (var i =0; i<data_count; i++){
181 + routeCode = JSON.stringify(userData["list"][i]["routeCode"]);
182 + svarAddr = JSON.stringify(userData["list"][i]["svarAddr"]);
183 + rest_name = JSON.stringify(userData["list"][i]["serviceAreaName"]);
170 184
171 - for (var i =0; i<count; i++){ 185 + if(routeCode.substring(1,5) === lineNumber){ // 고속도로 코드가 같다면
172 - routeCode = JSON.stringify(data["list"][i]["routeCode"]); 186 +
173 - svarAddr = JSON.stringify(data["list"][i]["svarAddr"]); 187 + routeCodes.push(routeCode);
174 - rest_name = JSON.stringify(data["list"][i]["serviceAreaName"]); 188 + svarAddrs.push(svarAddr);
175 - var infowindow = new kakao.maps.InfoWindow({ 189 + rest_names.push(rest_name);
176 - content: rest_name 190 + var geocoder = new kakao.maps.services.Geocoder();
177 - });
178 - if(routeCode.substring(1,5) === lineNumber){
179 - document.getElementById("testArea").innerHTML += routeCode.substring(1,5)+ " ";
180 - var geocoder = new kakao.maps.services.Geocoder();
181 -
182 - // 주소로 좌표를 검색합니다
183 - geocoder.addressSearch(svarAddr, function(result, status) {
184 -
185 - // 정상적으로 검색이 완료됐으면
186 - if (status === kakao.maps.services.Status.OK) {
187 -
188 - var coords = new kakao.maps.LatLng(result[0].y, result[0].x);
189 - var temp = i
190 -
191 - // 결과값으로 받은 위치를 마커로 표시합니다
192 - var marker = new kakao.maps.Marker({
193 - map: map,
194 - position: coords,
195 - });
196 -
197 - // 인포윈도우로 장소에 대한 설명을 표시합니다
198 - kakao.maps.event.addListener(marker, 'mouseover', makeOverListener(map, marker, infowindow));
199 - kakao.maps.event.addListener(marker, 'mouseout', makeOutListener(infowindow));
200 - document.getElementById("position_ex").innerHTML = svarAddr;
201 -
202 - }
203 - });
204 - }
205 191
206 } 192 }
207 - }, 193 + }
194 + svarAddrs.forEach(function(addr,index){
195 + geocoder.addressSearch(addr,function(result,status){
196 + if(status === kakao.maps.services.Status.OK){
197 + var coords = new kakao.maps.LatLng(result[0].y, result[0].x);
198 + var marker = new kakao.maps.Marker({
199 + position:coords,
200 + map:map,
201 + })
202 + var infowindow = new kakao.maps.InfoWindow({
203 + content: rest_names[index],
204 + });
205 + kakao.maps.event.addListener(marker, 'mouseover', makeOverListener(map, marker, infowindow));
206 + kakao.maps.event.addListener(marker, 'mouseout', makeOutListener(infowindow));
207 + }
208 + })
209 + })
208 }) 210 })
209 - */ 211 + }
210 212
211 </script> 213 </script>
212 </head> 214 </head>
......