PageSourceSearch

https://dawulmap.com/js/grid.js

js dawulmap.com collected 2026-10-02 00:29:41 UTC 31,640 bytes, 824 lines download raw bytes

1var infoSeedUrl1 = "https://geohash.geonick.name/api/v2/coords2gridaddress.do?"; // 위경도 좌표를 격자주소로 변환
2var infoSeedUrl2 = "https://geohash.geonick.name/api/v2/gridaddress2coords.do?"; // 격자주소를 위경도 좌표로 변환
3var infoSeedUrl3 = "https://geohash.geonick.name/api/v2/gagridlines.do?"; // 지도화면의 격자를 반환
4var infoSeedUrl4 = "https://geohash.geonick.name/api/v2/searchgridaddress.do?"; // 격자주소를 검색
5
6var infoSeedKey = "5A651E747AC44FD2";
7;
8var gridFlag = false; // 격자가 on/off 인지 판별하는 플래그
9var gridRightFlag = false; // 오른쪽 클릭 격자주소 보기 클릭 시 여부 판단하는 플래그
10
11var gridCellRectangleArr = new Array(); // 셀 영역의 격자를 담는 배열
12var gridBoundsRectangleArr = new Array(); // 전체 영역의 격자를 담는 배열
13
14var gridTooltip = null;
15var gridCellRectangle = null;
16
17/**
18 * 격자 버튼 ON/OFF 이벤트
19 * gridFlag : false 종료, true 실행
20 */
21function gridDisplay(){
22	if($("#naviForm").css("display") == "none") // 길찾기 비 활성화 시
23	{	
24		searchModeChange(0); // 검색모드 통합검색(0)
25		searchReset(); // 길찾기 검색모드 종료 및 검색 초기화
26		
27		if(gridFlag == false){
28			gridAllClear(0); // 격자주소 on/off버튼 표출 후 초기화
29			
30			var nowLevel = map.getZoom();
31			if(nowLevel == 12 || nowLevel == 13)
32			{
33				$("#gridOff").css("display","none");
34				$("#gridOn").css("display","");
35
36				gridBounds();
37			}
38			else if(nowLevel < 12)
39			{
40				$("#gridPopBg").css("display",""); // 12레벨 이하일 시 팝업 표출
41				
42				var html_ = "";
43				html_ += "<p>격자주소는 30m/20m 축척에서 확인 가능합니다.</p>";
44				html_ += "<p>해당 축척으로 이동하시겠습니까?</p>";
45				html_ += "<div class='btn_E'><a href='#' onclick='gridScaleCheck();'>확인</a></div>";
46				
47				$("#gridPopCon").html(html_);
48			}
49			
50			gridFlag = true;
51		}else if(gridFlag == true){
52			gridCellClear(); // 셀 초기화
53			gridBoundsClear(); // 영역 초기화
54			gridTooltipClose(); // 툴팁 초기화
55			
56			$("#gridOff").css("display","");
57			$("#gridOn").css("display","none");
58			
59			gridFlag = false;
60		}
61	}
62	else if($("#naviForm").css("display") == "block") // 길찾기 활성화 시
63	{
64		$("#gridPopBg").css("display",""); // 길찾기에서 격자주소 화면 넘어올 시 팝업
65		
66		var html_ = "";
67		html_ += "<p>격자주소 활성화 시 길찾기는 초기화되며,</p>";
68		html_ += "<p>격자주소 화면으로 전환됩니다.</p>";
69		html_ += "<div class='btn_E'><a href='#' onclick='gridScaleCheck();'>확인</a></div>";
70		
71		$("#gridPopCon").html(html_);
72	}
73	
74}
75
76/** 화면 전체 영역의 격자를 가져옴 **/
77function gridBounds(){
78	var bounds = map.getBounds(); // 지도의 영역
79	
80	var minx = bounds._northEast.lat;
81	var miny = bounds._northEast.lng;
82	var maxx = bounds._southWest.lat;
83	var maxy = bounds._southWest.lng;
84	
85	var centers = map.getCenter();
86	var centersLat = centers.lat;
87	var centersLng = centers.lng;
88	
89	var dataString = "bbox=" +miny+ "," +minx+ "," +maxy+ "," +maxx+ "&key=" +infoSeedKey+ "&coords=" +centersLat+ "," +centersLng;
90	
91	$.ajax({
92		url:infoSeedUrl3, // 지도 화면 영역의 격자 반환
93		async:true,
94		type:'POST',
95		dataType:'json',
96		data:dataString,
97		timeout : 200000,
98		error : function(d, textStatus, error){
99			alert("다시 실행해주시기 바랍니다. code:11 \n"+"getJSON failed : "+d+",  status: " + textStatus + ",  error: "+error);
100		},success: function(data, result){
101			gridBoundsClear();
102				
103			var gridLines = data.gridlines;
104				
105			for(var i = 0; i < gridLines.length; i++){
106				var maxx = gridLines[i].start_x;
107				var maxy = gridLines[i].start_y;
108				var minx = gridLines[i].end_x;
109				var miny = gridLines[i].end_y;
110					
111				var maxCoordi = new Array();
112				maxCoordi.push(maxy);
113				maxCoordi.push(maxx);
114				var minCoordi = new Array();
115				minCoordi.push(miny);
116				minCoordi.push(minx);
117				
118				var bounds = new Array();
119				bounds.push(maxCoordi);
120				bounds.push(minCoordi);
121				
122				gridBoundsRectangleArr.push(L.rectangle(bounds, {color: "#8C8C8C", weight: 0.9}).addTo(map));
123			}
124		}
125	});
126}
127
128/** 
129 * 클릭 한 위치의 격자정보 표출
130 * @param lat, lng 클릭 한 위치의 위도,경도
131 * @param gridRightType 우클릭 시
132 */
133function girdCellBounds(lat, lng, gridRightType){
134	if(gridRightType == 1){ // 우클릭 시 이벤트
135		map.closePopup(rightClickPop);
136		
137		$("#naviForm").css("display","none")
138		$("#gridPopBg").css("display","none");
139	}
140	
141	var gridCelldata = null; // 클릭한 위치에 대한 격자 데이터
142	var gridRevJibunData = null; // 클릭한 위치에 대한 지번 주소 데이터
143	var gridRevRoadData = null; // 클릭한 위치에 대한 도로명 주소 데이터
144	
145	var dataString = "coords="+ lat +","+ lng +"&key="+ infoSeedKey +"&display=full&lang=ko";
146	$.ajax({
147		url:infoSeedUrl1, // 위경도 좌표를 격자주소로 변환
148		async:true,
149		type:'POST',
150		dataType:'json',
151		data:dataString,
152		timeout : 200000,
153		error : function(d, textStatus, error){
154			alert("다시 실행해주시기 바랍니다. code:11 \n"+"getJSON failed : "+d+",  status: " + textStatus + ",  error: "+error);
155		},success: function(data, result){
156			gridCelldata = data;
157			
158			jHeader.serviceName = "REVERSE_GEOCODING";
159			revBody.point = lat +","+ lng;
160			revBody.selectFields.geoType = "ORIGIN";
161			revBody.adminType = "JIBUN_ADDRESS";
162			revBody.spatialOperation = "INTERSECT";
163			
164			var jReqBody = {
165				"header" : jHeader,
166				"body" : revBody
167			};
168			
169			var dataString = "callback=?&req="+ encodeURIComponent(objectToJSONString(jReqBody));
170			$.ajax({
171				url:jUrl,
172				async:true,
173				type:'POST',
174				dataType:'jsonp',
175				data:dataString,
176				timeout : 200000,
177				error : function(d, textStatus, error){
178					alert("다시 실행해주시기 바랍니다. code:11 \n"+"getJSON failed : "+d+",  status: " + textStatus + ",  error: "+error);
179				},success: function(data, result){
180					gridRevJibunData = data;
181					
182					if(gridRevJibunData.body.geojson != undefined){
183						var properties = gridRevJibunData.body.geojson.features[0].properties;
184						
185						jHeader.serviceName = "REVERSE_GEOCODING";
186						revBody.point = lat +","+ lng;
187						revBody.selectFields.geoType = "ORIGIN";
188						revBody.adminType = "ROAD_ADDRESS";
189						revBody.spatialOperation = "INTERSECT";
190						
191						var jReqBody = {
192							"header" : jHeader,
193							"body" : revBody
194						};
195						
196						var dataString = "callback=?&req="+ encodeURIComponent(objectToJSONString(jReqBody));
197						console.log(jUrl + "" + dataString);
198						$.ajax({
199							url:jUrl,
200							async:true,
201							type:'POST',
202							dataType:'jsonp',
203							data:dataString,
204							timeout : 200000,
205							error : function(d, textStatus, error){
206								alert("다시 실행해주시기 바랍니다. code:11 \n"+"getJSON failed : "+d+",  status: " + textStatus + ",  error: "+error);
207							},success: function(data, result){
208								gridTooltipClose()
209								
210								gridRevRoadData = data;
211								
212								var middleCnt = middleCoords.size();
213								if(middleNames.get("middleInput0")==null) {
214									middleCnt = 0;
215								}else if(middleNames.get("middleInput1")==null) {
216									middleCnt = 1;
217								}else if(middleNames.get("middleInput2")==null) {
218									middleCnt = 2;
219								}else if(middleNames.get("middleInput3")==null) {
220									middleCnt = 3;
221								}else if(middleNames.get("middleInput4")==null) {
222									middleCnt = 4;
223								}
224								
225								var content1 = gridCelldata.gridaddress.cityname +"."+ gridCelldata.gridaddress.gridword +"."+ gridCelldata.gridaddress.cellcode; // 클릭 한 격자 정보
226								var content2 = "";
227								var content3 = "";
228								var content4 = "";
229								var addressType = "";
230								
231								var html_  = "";
232								html_ += '<div class="tooltip t_size">';
233								html_ += '<div class="t_bx opacity">';
234								html_ += '<div class="info i_size2 clear">';
235								var bodyLength = Object.keys(gridRevRoadData.body).length;
236								if(bodyLength > 0) // 도로명 주소가 존재
237								{
238									content2 = gridRevRoadData.body.geojson.features[0].properties.newrpnuname; // 도로명 주소
239									//content3 = gridRevRoadData.body.geojson.features[0].properties.pnuname; // 지번 주소
240									content3 = gridRevJibunData.body.geojson.features[0].properties.pnuname;
241									content4= gridRevRoadData.body.geojson.features[0].properties.buildname; // 건물 명
242									
243									html_ += '<h3 class="clear">';
244									html_ += '<span class="title3">'+ content1 +'</span>';
245									html_ += '</h3>';
246									html_ += '<ul class="con">';
247									html_ += '<li class="txt2">도로명 : '+ content2 +'</li>';
248									html_ += '<li class="txt2">지번 : '+ content3 +'</li>';
249									html_ += '<li class="txt2">'+ content4 +'</li>';
250									html_ += '</ul>';
251									html_ += '<ul class="t_btn2 clear">';
252									html_ += '<li class="btn_B"><a href="#" onclick="naviChoice(\'startInput\','+ lat +','+ lng +',\''+ content2 +'\');">출발</a></li>';
253									html_ += '<li class="btn_B"><a href="#" onclick="naviChoice(\'middleInput'+middleCnt+'\','+ lat +','+ lng +',\''+ content2 +'\');">경유</a></li>';
254									html_ += '<li class="btn_B"><a href="#" onclick="naviChoice(\'endInput\','+ lat +','+ lng +',\''+ content2 +'\');">도착</a></li>';
255									html_ += '</ul>';
256									html_ += '<ul class="t_btn3 clear">';
257									html_ += '<li class="btn_B"><a href="#" onclick="outLink(\'grid\',\'ROAD_ADDRESS\',\''+ lat +'_'+ lng +'\');");">지도복사</a></li>';
258									html_ += '</ul>';
259								}
260								else // 도로명 주소가 미 존재
261								{
262									content2 = gridRevJibunData.body.geojson.features[0].properties.pnuname;
263									
264									html_ += '<h3 class="clear">';
265									html_ += '<span class="title3">'+ content1 +'</span>';
266									html_ += '</h3>';
267									html_ += '<ul class="con">';
268									html_ += '<li class="txt2">지번 : '+ content2 +'</li>';
269									html_ += '</ul>';
270									html_ += '<ul class="t_btn2 clear">';
271									html_ += '<li class="btn_B"><a href="#" onclick="naviChoice(\'startInput\','+lat+','+lng+',\''+content2+'\');">출발</a></li>';
272									html_ += '<li class="btn_B"><a href="#" onclick="naviChoice(\'middleInput'+middleCnt+'\','+lat+','+lng+',\''+content2+'\');">경유</a></li>';
273									html_ += '<li class="btn_B"><a href="#" onclick="naviChoice(\'endInput\','+lat+','+lng+',\''+content2+'\');">도착</a></li>';
274									html_ += '</ul>';
275									html_ += '<ul class="t_btn3 clear">';
276									html_ += '<li class="btn_B"><a href="#" onclick="outLink(\'grid\',\'JIBUN_ADDRESS\',\''+lat+'_'+lng+'\');");");">지도복사</a></li>';
277									html_ += '</ul>';
278								}
279								html_ += '</div>';
280								html_ += '</div>';
281								html_ += '<div class="t_arrow opacity"></div>';
282								html_ += '<!-- 닫기 버튼 --><div class="t_close"><span><a href="#" onclick="gridTooltipClose();"></a></span></div>';
283								html_ += '</div>';
284								
285								// 툴팁
286								gridTooltip = L.popup({
287									autoPanPaddingBottomRight:[75,0], offset:[-32,27.5], minWidth:168, autoPan:true, closeButton:false, 'className':'dawul'
288								});
289								gridTooltip.setContent(html_);
290								gridTooltip.setLatLng([gridCelldata.cellcenter.lat, gridCelldata.cellcenter.lng]);
291								gridTooltip.addTo(map);
292								
293								var maxx = gridCelldata.gridbounds.maxx;
294								var maxy = gridCelldata.gridbounds.maxy;
295								var minx = gridCelldata.gridbounds.minx;
296								var miny = gridCelldata.gridbounds.miny;
297								
298								var maxCoordi = new Array();
299								maxCoordi.push(maxy);
300								maxCoordi.push(maxx);
301								var minCoordi = new Array();
302								minCoordi.push(miny);
303								minCoordi.push(minx);
304								
305								var bounds = new Array();
306								bounds.push(maxCoordi);
307								bounds.push(minCoordi);
308								
309								gridCellRectangleArr.push(L.rectangle(bounds, {fillColor:"#F7941D",fillOpacity:0.4,color: "#F7941D",weight: 4, opacity: 1}).addTo(map));
310								gridCellRectangleArr[gridCellRectangleArr.length-1].bounds = bounds;
311								gridCellRectangleArr[gridCellRectangleArr.length-1].lat = gridCelldata.cellcenter.lat;
312								gridCellRectangleArr[gridCellRectangleArr.length-1].lng = gridCelldata.cellcenter.lng;
313								gridCellRectangleArr[gridCellRectangleArr.length-1].on("click",function(e) {
314									gridTooltip.addTo(map);
315								});
316								
317								//map.fitBounds(bounds);
318								
319								var maxx = data.cellbounds.maxx;
320								var maxy = data.cellbounds.maxy;
321								var minx = data.cellbounds.minx;
322								var miny = data.cellbounds.miny;
323								
324								var maxCoordi = new Array();
325								maxCoordi.push(maxy);
326								maxCoordi.push(maxx);
327								var minCoordi = new Array();
328								minCoordi.push(miny);
329								minCoordi.push(minx);
330								
331								var bounds = new Array();
332								bounds.push(maxCoordi);
333								bounds.push(minCoordi);
334								
335								gridCellRectangle = L.rectangle(bounds, {color: "#FF0000", weight: 2}).addTo(map);
336							}
337						}); // 도로명 주소 API 호출//
338					}else{
339						$("#gridPopBg").css("display","");
340						
341						var html_ = "";
342						html_ += "<p>선택한 위치의 격자주소를 </p>";
343						html_ += "<p>찾을 수 없습니다.</p>";
344						html_ += "<div class='btn_E'><a href='#' onclick='gridPopClose(1)'>확인</a></div>";
345						
346						$("#gridPopCon").html(html_);
347					}
348				}
349			}); // 지번 주소 API 호출 //
350		}
351	}); // 격자 정보 API 호출 //
352}
353
354/** 마우스 우클릭 시 격자 주소 보기 이벤트 **/
355function gridRightTooltipLayout(lat, lng){
356	gridRightFlag = true;
357	
358	gridAllClear(0);
359	
360	if($("#naviForm").css("display") == "block")
361	{
362		$("#gridPopBg").css("display","");
363		
364		var html_ = "";
365		html_ += "<p>격자주소 활성화시 길찾기는 초기화되며,</p>";
366		html_ += "<p>격자주소 화면으로 전환됩니다.</p>";
367		html_ += "<div class='btn_E'><a href='#' onclick='girdCellBounds("+ lat +","+ lng +",1)'>확인</a></div>";
368		
369		$("#gridPopCon").html(html_);
370	}
371	else if($("#naviForm").css("display") == "none")
372	{
373		var nowLevel = map.getZoom();
374		
375		if(nowLevel == 12 || nowLevel == 13){
376			//$("#gridOff").css("display","none");
377			//$("#gridOn").css("display","");
378
379			girdCellBounds(lat, lng, 1);
380		}else if(nowLevel < 12){
381			$("#gridPopBg").css("display","");
382			
383			var html_ = "";
384			html_ += "<p>격자주소는 30m/20m 축척에서 확인 가능합니다.</p>";
385			html_ += "<p>해당 축척으로 이동하시겠습니까?</p>";
386			html_ += "<div class='btn_E'><a href='#' onclick='girdCellBounds(" +lat+","+ lng+",1)'>확인</a></div>";
387			
388			$("#gridPopCon").html(html_);
389		}
390		
391		//gridFlag = true;
392	}
393}
394
395var gridWordArr = new Array();
396var gridTooltipArr = new Array();
397
398var gridIndex = 0;
399var gridTotalIndex = 0;
400var gridTotalCheckCnt = 0;
401var gridDotCount = 0; // 격자주소 검색 시 . 을 담는 숫자
402
403var gridHtml_ = "";
404
405/**
406 * 격자 주소 검색 시
407 */
408function gridSerach(){
409	var gridSearchDatas = null; // 격자주소 검색 시 데이터(격자주소의 gridword 값을 알기 위해서)
410	
411	var dataString = "gridword=" + searchName + "&lang=ko&lng=126.99044270833338&lat=37.40092916666667&key="+infoSeedKey;
412	$.ajax({
413		url:infoSeedUrl4,
414		async: false,
415		type:'post',
416		dataType:'json',
417		data:dataString,
418		timeout:200000,
419		error : function(d, txtStatus, error) {
420			//alert("다시 실행해주시기 바랍니다. code:11 \n"+"getJSON failed : " + d + ",  status: "+ txtStatus + ",  error: " + error);
421			alert("다시 검색 해 주세요.");
422		},success: function(data,result){
423			gridSearchDatas = data;
424			var gridSearchTotalLength = gridSearchDatas.searchdatas.length; // 검색 한 격자주소의 전체 개수
425				
426			if(gridSearchTotalLength > 0){
427				$("#address_list_more").css("display", "none");
428				
429				for(var i = 0 ; i < gridSearchTotalLength; i++){
430					var gridWord = data.searchdatas[i].areaname + "." + data.searchdatas[i].gridword + "." + data.searchdatas[i].cellcode;
431					
432					gridWordArr.push(gridWord);
433				}
434				
435				gridAjaxCommunity(0, gridSearchTotalLength);
436			}else{
437				$("#addressSearchForm").css("display","none");
438				$("#poiSearchForm").css("display","none");
439				searchListNull();
440			}
441		}
442   });
443}
444
445function gridAjaxCommunity(gridSize, girdWordTotalCnt){
446	var gridWord = gridWordArr[gridSize];
447	
448	gridIndex = (gridSize+1);
449	gridTotalIndex = girdWordTotalCnt;
450	
451	var gridCellData = null; // cell 정보
452	var cellCenter = null; // cell 중심좌표정보
453	var gridRevJibunData = null;
454	var gridRevRoadData = null;
455	
456	var dataString = "gridword=" + gridWord + "&key=" + infoSeedKey + "&display=full&lang=ko";
457	$.ajax({
458		url:infoSeedUrl2,
459		async: true,
460		type:'post',
461		dataType:'json',
462		data:dataString,
463		timeout:200000,
464		error : function(d, txtStatus, error) {
465			alert("다시 실행해주시기 바랍니다. code:11 \n"+"getJSON failed : " + d + ",  status: "+ txtStatus + ",  error: " + error);
466		},success: function(data2,result){
467			cellCenter = data2.cellcenter;
468			
469			var dataString = "coords="+ cellCenter.lat +","+ cellCenter.lng +"&key="+ infoSeedKey +"&display=full&lang=ko";
470			$.ajax({
471				url:infoSeedUrl1,
472				async:true,
473				type:'POST',
474				dataType:'json',
475				data:dataString,
476				timeout : 200000,
477				error : function(d, textStatus, error){
478					alert("다시 실행해주시기 바랍니다. code:11 \n"+"getJSON failed : "+d+",  status: " + textStatus + ",  error: "+error);
479				},success: function(data, result){
480					gridCellData = data;
481					
482					jHeader.serviceName = "REVERSE_GEOCODING";
483					revBody.point = cellCenter.lat +","+ cellCenter.lng;
484					revBody.selectFields.geoType = "ORIGIN";
485					revBody.adminType = "JIBUN_ADDRESS";
486					revBody.spatialOperation = "INTERSECT";
487					
488					var jReqBody = {
489						"header" : jHeader,
490						"body" : revBody
491					};
492		
493					var dataString = "callback=?&req="+ encodeURIComponent(objectToJSONString(jReqBody));
494					$.ajax({
495						url:jUrl,
496						async:false,
497						type:'POST',
498						dataType:'jsonp',
499						data:dataString,
500						timeout : 200000,
501						error : function(d, textStatus, error){
502							alert("다시 실행해주시기 바랍니다. code:11 \n"+"getJSON failed : "+d+",  status: " + textStatus + ",  error: "+error);
503						},success: function(data3, result){
504							gridRevJibunData = data3;
505							
506							if(gridRevJibunData.body.geojson != undefined){
507								jHeader.serviceName = "REVERSE_GEOCODING";
508								revBody.point = cellCenter.lat +","+ cellCenter.lng;
509								revBody.selectFields.geoType = "ORIGIN";
510								revBody.adminType = "ROAD_ADDRESS";
511								revBody.spatialOperation = "INTERSECT";
512								
513								var jReqBody = {
514									"header" : jHeader,
515									"body" : revBody
516								};
517								
518								var dataString = "callback=?&req="+ encodeURIComponent(objectToJSONString(jReqBody));
519								$.ajax({
520									url:jUrl,
521									async:false,
522									type:'POST',
523									dataType:'jsonp',
524									data:dataString,
525									timeout : 200000,
526									error : function(d, textStatus, error){
527										alert("다시 실행해주시기 바랍니다. code:11 \n"+"getJSON failed : "+d+",  status: " + textStatus + ",  error: "+error);
528									},success: function(data4, result){
529										gridRevRoadData = data4;
530										
531										var middleCnt = middleCoords.size();
532										if(middleNames.get("middleInput0")==null) {
533											middleCnt = 0;
534										}else if(middleNames.get("middleInput1")==null) {
535											middleCnt = 1;
536										}else if(middleNames.get("middleInput2")==null) {
537											middleCnt = 2;
538										}else if(middleNames.get("middleInput3")==null) {
539											middleCnt = 3;
540										}else if(middleNames.get("middleInput4")==null) {
541											middleCnt = 4;
542										}
543										
544										//var gridAddress = "["+ gridCellData.gridaddress.split(".")[0] +"] "+ gridCellData.gridaddress.split(".")[1] +"."+ gridCellData.gridaddress.split(".")[2] +"."+ gridCellData.gridaddress.split(".")[3]; // 클릭 한 격자 정보
545										var gridAddress = gridCellData.gridaddress.cityname +"."+ gridCellData.gridaddress.gridword +"."+ gridCellData.gridaddress.cellcode; // 클릭 한 격자 정보
546										var properties = null;
547										var properties2 = null;
548										
549										var content1 = "";
550										
551										var bodyLength = Object.keys(gridRevRoadData.body).length;
552										if(bodyLength > 0) // 도로명 주소가 존재
553										{
554											properties = gridRevRoadData.body.geojson.features[0].properties;
555											
556											var html_  = "";
557											
558											var pnuName = properties.pnuname;
559											
560											//html_ += '<div class="tooltip t_size" style="opacity: 0.83;">';
561											html_ += '<div class="tooltip t_size">';
562											html_ += '<div class="t_bx opacity">';
563											html_ += '<div class="info i_size2 clear">';
564											html_ += '<h3 class="clear">';
565											html_ += '<span class="title3">'+ gridAddress +'</span>';
566											html_ += '</h3>';
567												
568											var content2 = gridRevRoadData.body.geojson.features[0].properties.newrpnuname; // 도로명 주소
569											//var content3 = gridRevRoadData.body.geojson.features[0].properties.pnuname; // 지번 주소
570											var content3 = gridRevJibunData.body.geojson.features[0].properties.pnuname;
571											var content4= gridRevRoadData.body.geojson.features[0].properties.buildname; // 건물 명
572												
573											html_ += '<ul class="con">';
574											html_ += '<li class="txt2">도로명 : '+ content2 +'</li>';
575											html_ += '<li class="txt2">지번 : '+ content3 +'</li>';
576											html_ += '<li class="txt2">'+ content4 +'</li>';
577											html_ += '</ul>';
578											html_ += '<ul class="t_btn2 clear">';
579											html_ += '<li class="btn_B"><a href="#" onclick="naviChoice(\'startInput\','+ cellCenter.lat +','+ cellCenter.lng +',\''+ content2 +'\');">출발</a></li>';
580											html_ += '<li class="btn_B"><a href="#" onclick="naviChoice(\'middleInput'+middleCnt+'\','+ cellCenter.lat +','+ cellCenter.lng +',\''+ content2 +'\');">경유</a></li>';
581											html_ += '<li class="btn_B"><a href="#" onclick="naviChoice(\'endInput\','+ cellCenter.lat +','+ cellCenter.lng +',\''+ content2 +'\');">도착</a></li>';
582											html_ += '</ul>';
583											html_ += '<ul class="t_btn3 clear">';
584											html_ += '<li class="btn_B"><a href="#" onclick="outLink(\'grid\',\'ROAD_ADDRESS\',\''+ cellCenter.lat +'_'+ cellCenter.lng +'\');");">지도복사</a></li>';
585											html_ += '</ul>';
586												
587											html_ += '</div>';
588											html_ += '</div>';
589											html_ += '<div class="t_arrow opacity"></div>';
590											//html_ += '<!-- 닫기 버튼 --><div class="t_close"><span><a href="#" onclick="gridTooltipClose2()"></a></span></div>';
591											html_ += '</div>';
592												
593											// 툴팁
594											gridTooltipArr.push(L.popup({
595												autoPanPaddingBottomRight:[75,0], offset:[-32,27.5],minWidth:168, keepInView:false, autoPan:true, closeButton:false, 'className':'dawul'
596											}));
597											gridTooltipArr[gridTooltipArr.length -1].setContent(html_);
598											gridTooltipArr[gridTooltipArr.length -1].setLatLng([cellCenter.lat, cellCenter.lng]);
599										}
600										else
601										{
602											properties = gridRevJibunData.body.geojson.features[0].properties;
603											
604											var pnuName = properties.pnuname;
605											
606											var html_  = "";
607											
608											html_ += '<div class="tooltip t_size">';
609											html_ += '<div class="t_bx opacity">';
610											html_ += '<div class="info i_size2 clear">';
611											html_ += '<h3 class="clear">';
612											html_ += '<span class="title3">'+ gridAddress +'</span>';
613											html_ += '</h3>';
614												
615											var content2 = gridRevJibunData.body.geojson.features[0].properties.pnuname;
616												
617											html_ += '<ul class="con">';
618											html_ += '<li class="txt2">지번 : '+ content2 +'</li>';
619											html_ += '</ul>';
620											html_ += '<ul class="t_btn2 clear">';
621											html_ += '<li class="btn_B"><a href="#" onclick="naviChoice(\'startInput\','+cellCenter.lat+','+cellCenter.lng+',\''+content2+'\');">출발</a></li>';
622											html_ += '<li class="btn_B"><a href="#" onclick="naviChoice(\'middleInput'+middleCnt+'\','+cellCenter.lat+','+cellCenter.lng+',\''+content2+'\');">경유</a></li>';
623											html_ += '<li class="btn_B"><a href="#" onclick="naviChoice(\'endInput\','+cellCenter.lat+','+cellCenter.lng+',\''+content2+'\');">도착</a></li>';
624											html_ += '</ul>';
625											html_ += '<ul class="t_btn3 clear">';
626											html_ += '<li class="btn_B"><a href="#" onclick="outLink(\'grid\',\'JIBUN_ADDRESS\',\''+cellCenter.lat+'_'+cellCenter.lng+'\');");");">지도복사</a></li>';
627											html_ += '</ul>';
628											
629											html_ += '</div>';
630											html_ += '</div>';
631											html_ += '<div class="t_arrow opacity"></div>';
632											//html_ += '<!-- 닫기 버튼 --><div class="t_close"><span><a href="#" onclick="gridTooltipClose2();"></a></span></div>';
633											html_ += '</div>';
634												
635											// 툴팁
636											gridTooltipArr.push(L.popup({
637												autoPanPaddingBottomRight:[75,0], offset:[-32,27.5],minWidth:168, keepInView:false, autoPan:true, closeButton:false, 'className':'dawul'
638											}));
639											gridTooltipArr[gridTooltipArr.length - 1].setContent(html_);
640											gridTooltipArr[gridTooltipArr.length - 1].setLatLng([cellCenter.lat, cellCenter.lng]);
641										}
642										
643										var maxx = gridCellData.gridbounds.maxx;
644										var maxy = gridCellData.gridbounds.maxy;
645										var minx = gridCellData.gridbounds.minx;
646										var miny = gridCellData.gridbounds.miny;
647										
648										var maxCoordi = new Array();
649										maxCoordi.push(maxy);
650										maxCoordi.push(maxx);
651										var minCoordi = new Array();
652										minCoordi.push(miny);
653										minCoordi.push(minx);
654										
655										var bounds = new Array();
656										bounds.push(maxCoordi);
657										bounds.push(minCoordi);
658		
659										var listMarkerImg = "./images/pin/pin_"+(gridCellRectangleArr.length+1)+".png";
660										gridCellRectangleArr.push(L.rectangle(bounds, {fillColor:"#F7941D",fillOpacity:0.4,color: "#F7941D", weight: 4, opacity: 1}).addTo(map));
661										gridCellRectangleArr[gridCellRectangleArr.length-1].listMarkerImg = listMarkerImg;
662										gridCellRectangleArr[gridCellRectangleArr.length-1].gridIndex = (gridIndex-1);
663										gridCellRectangleArr[gridCellRectangleArr.length-1].bounds = bounds;
664										gridCellRectangleArr[gridCellRectangleArr.length-1].on("click",function(e) {
665											
666											for(var i = 0; i < gridCellRectangleArr.length; i++){
667												if(i == this.gridIndex){
668													$(".JusoResult").eq(this.gridIndex).addClass("on");
669													gridTooltipArr[this.gridIndex].addTo(map);
670												}else{
671													$(".JusoResult").eq(i).removeClass("on");
672													map.removeLayer(gridTooltipArr[i]);
673												}
674											}
675										});
676										
677										if(gridIndex != gridTotalIndex){ // 순차적 ajax통신(순서 != 마지막순서)
678											if(gridIndex == 1){ map.fitBounds(bounds); }
679											
680											gridHtml_ += searchList("gridSearch", properties, cellCenter.lat, cellCenter.lng, "", "", gridAddress);
681											
682											gridAjaxCommunity(gridIndex, gridTotalIndex);
683										}else{
684											gridHtml_ += searchList("gridSearch", properties, cellCenter.lat, cellCenter.lng, "", "", gridAddress);
685											
686											$("#poiSearchForm").css("display","none");
687											searchResult("gridSearch",0,gridTotalIndex,gridHtml_,1);
688										}
689										
690									}
691								});
692							}else{
693								if(gridIndex == gridTotalIndex){
694									gridTotalCheckCnt++;
695									gridTotalIndex = gridTotalIndex - gridTotalCheckCnt;
696									
697									searchResult("gridSearch",0,gridTotalIndex,gridHtml_,1);
698									
699									$("#poiSearchForm").css("display","none");
700								}else{
701									gridTotalCheckCnt++;
702									
703									gridAjaxCommunity(gridIndex, gridTotalIndex);
704								}
705							}
706						}
707					});
708				}
709			});
710		}
711	});
712}
713
714/** 12레벨 미만일 시 12레벨로 들어가는 이벤트 **/
715function gridScaleCheck(){
716	$("#gridPopBg").css("display","none");
717	$("#gridOff").css("display","none");
718	$("#gridOn").css("display","");
719	$("#m_nearby").attr("class","m_nearby");
720	
721	gridFlag = true;
722	map.setZoom(12);
723	gridBounds();
724	searchModeChange(0);
725	ncodePOISearchClear();
726	
727	map.closePopup(rightClickPop);
728}
729
730/** 전체 격자 영역 초기화 **/
731function gridBoundsClear(){
732	while (gridBoundsRectangleArr.length > 0) {
733		map.removeLayer(gridBoundsRectangleArr[gridBoundsRectangleArr.length - 1]);
734		gridBoundsRectangleArr.pop();
735	}
736}
737
738/** 선택 한 격자 영역 초기화 **/
739function gridCellClear(){
740	while (gridCellRectangleArr.length > 0) {
741		map.removeLayer(gridCellRectangleArr[gridCellRectangleArr.length - 1]);
742		gridCellRectangleArr.pop();
743	}
744	if(gridCellRectangle != null){
745		map.removeLayer(gridCellRectangle);
746		gridCellRectangle = null;
747	}
748}
749
750/** 팝업 초기화 **/
751function gridPopClose(mode){
752	if(mode == 0){
753		gridFlag = false;
754		
755		$("#gridPopBg").css("display","none");
756		$("#gridOff").css("display","");
757		$("#gridOn").css("display","none");
758		
759		gridBoundsClear();
760	}else if(mode == 1){
761		$("#gridPopBg").css("display","none");
762	}
763}
764
765/** 선택 한 격자 툴팁 초기화 **/
766function gridTooltipClose(){
767	if(gridTooltip!=null) {
768		map.removeLayer(gridTooltip);
769		gridTooltip = null;
770	}
771	
772	gridCellClear();
773}
774
775function gridTooltipClose2(){
776	while (gridTooltipArr.length > 0) {
777		map.removeLayer(gridTooltipArr[gridTooltipArr.length - 1]);
778		gridTooltipArr.pop();
779	}
780}
781
782/**
783 * 격자 정보 전체 초기화
784 * @param mode 0 : 일반지도 1 : 일반지도 아닌 다른 하이브리드 지도
785 */
786function gridAllClear(mode){
787	if(mode == 0){
788		$("#gridForm").css("display","");
789		
790		if(gridRightFlag == true){
791			searchModeChange(0);
792			searchReset();
793		}
794		
795		gridRightFlag = false;
796	}
797	else if(mode == 1)
798	{
799		$("#gridForm").css("display","none");
800		
801		if(gridWordArr.length > 0) {
802			searchModeChange(0); // 검색모드 통합검색(0)
803			searchReset(); // 길찾기 검색모드 종료 및 검색 초기화
804		}
805	}
806	
807	while (gridWordArr.length > 0) {
808		gridWordArr.pop();
809	}
810	
811	gridIndex = 0;
812	gridTotalIndex = 0;
813	gridTotalCheckCnt = 0;
814	gridHtml_ = "";
815	
816	gridDotCount = 0;
817	gridBoundsClear();
818	gridCellClear();
819	gridPopClose(0);
820	gridTooltipClose();
821	gridTooltipClose2();
822	
823	map.closePopup(rightClickPop);
824}

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.