다음 지도서비스 스킨적용시 좌표값이 안넘어 올경우 > 그누4 질문답변

그누4 질문답변

그누보드4 관련 질문은 QA 로 이전됩니다. QA 그누보드4 바로가기
기존 게시물은 열람만 가능합니다.

다음 지도서비스 스킨적용시 좌표값이 안넘어 올경우 정보

다음 지도서비스 스킨적용시 좌표값이 안넘어 올경우

본문

http://sir.co.kr/bbs/board.php?bo_table=g4_skin&wr_id=106064&sca=&sfl=wr_subject&stx=%C1%F6%B5%B5&sop=and

의 지도스킨을 씁니다..
키값이나 모든것 체크했는데 결과적으로 지도가 표시안되네요...

지도를 표시하는데 필요한 road_map.php내용은 아래와 같습니다.
중간에 echo문 쓴것은 값을 확인하기위해 쓴겁니다...
작업사이트는 링크1에 있습니다.
지금까지 결론에는 charset에서 무언가 안맞는거 같기도 하고..ㅡ.ㅡ; 거기까지가 한계이네요..
도움 부탁드리겠습니다.


<!-- 다음 지도 키 값 -->
<script src="http://apis.daum.net/maps/maps2.js?apikey=50eb0025937ca1a630943686abec45ad1b0c2059" charset="utf-8"></script>
<!-- 다음 지도 키 값 끝 -->
<?
// 다음 지도api 키값
$map_key = "apikey=50eb0025937ca1a630943686abec45ad1b0c2059" ;

// 쿼리 돌릴 주소
$address = $view[content];
$address = urlencode($address);
$map_query = iconv("euc-kr","utf-8",$address);
echo $address;
echo $map_query;
echo $view[content];

// 여기부터 주소 검색 xml 파싱
$pquery = $map_key. "&q=". $map_query . "&output=xml";
echo $pquery;
    $fp = fsockopen ("apis.daum.net", 80, $errno, $errstr, 30); 
    if (!$fp) { 
        echo "$errstr ($errno)"; 
    } else { 
        fputs($fp, "GET /maps/addr2coord?"); 
        fputs($fp, $pquery); 
        fputs($fp, " HTTP/1.1\r\n"); 
        fputs($fp, "Host: apis.daum.net\r\n"); 
        fputs($fp, "Connection: Close\r\n\r\n"); 
         
        $header = ""; 
        while (!feof($fp)) { 
            $out = fgets ($fp,512); 
            if (trim($out) == "") { 
                break; 
            } 
            $header .= $out; 
        } 
         
        $mapbody = ""; 
        while (!feof($fp)) { 
            $out = fgets ($fp,512); 
            $mapbody .= $out; 
        } 
         
        $idx = strpos(strtolower($header), "transfer-encoding: chunked"); 
         
        if ($idx > -1) { // chunk data 
            $temp = ""; 
            $offset = 0; 
            do { 
                $idx1 = strpos($mapbody, "\r\n", $offset); 
                $chunkLength = hexdec(substr($mapbody, $offset, $idx1 - $offset)); 
                 
                if ($chunkLength == 0) { 
                    break; 
                } else { 
                    $temp .= substr($mapbody, $idx1+2, $chunkLength); 
                    $offset = $idx1 + $chunkLength + 4; 
                } 
            } while(true); 
            $mapbody = $temp; 
        } 
        fclose ($fp); 
    }     
// 여기까지 주소 검색 xml 파싱

// 여기부터 좌표값 변수에 등록
print_r($map_y_point);
$map_x_point_1=explode("<lng>", $mapbody); 
$map_x_point_2=explode("</lng>", $map_x_point_1[1]); 
$map_x_point=$map_x_point_2[0]; 

$map_y_point_1=explode("<lat>", $mapbody); 
$map_y_point_2=explode("</lat>", $map_y_point_1[1]); 
$map_y_point=$map_y_point_2[0]; 
// 여기까지 좌표값 변수에 등록

?>
<table width="950" height="400" cellpadding="3" cellspacing="1" bgcolor="#FF9900" align="center">
	<tr>
		<td>
		<!-- 지도 출력 -->
		<div id='rmap'></div>
		<!-- 지도 출력 끝 -->
		</td>
		<td>
		<!-- 로브뷰 출력 -->
		<div id='roadview'></div>
		<!-- 로드뷰 출력 끝 -->
		</td>
	</tr>
</table>
<div style="height:10px;"></div>
<div style="text-align:left">
<button onclick="enable()">LoadView SHOW</button>
<button onclick="disable()">LoadView HIDE</button>
</div>
  • 복사

댓글 전체

road_map.php 파일에서 60번째 라인에다가

echo $mapbody; exit;

입력해놓고 XML 파싱된 값을 확인해 보면 글자가 깨져서 보이는 것이 다음 로드맵에서 리턴된 값이 UTF-8 이라서 현재 사용하고 계신 곳은 아마도 EUC-KR 일겁니다. 글자가 깨져서 리턴된다고 해도 좌표값만 리턴된 값 중에서 맨끝에 있는 좌표값만 필요한 거라서.

제 UTF-8 계정에서 echo $mapbody; 로 값을 체크해보면 아래와 같은 값이 ECHO됩니다.

<channel><title>Search address Daum Open API</title><desc>Daum Open API search result</desc><totalCount>2</totalCount><result>10</result><q>서울시 송파구 풍납동 390</q><pageno>1</pageno><item><id>J981016</id><title>서울 송파구 풍납동 390-0[아산병원길 22]</title><mountain></mountain><localName_1>서울</localName_1><localName_2>송파구</localName_2><localName_3>풍납동</localName_3><mainAddress>390</mainAddress><subAddress>0</subAddress><buildingAddress></buildingAddress><isNewAddress>N</isNewAddress><newAddress>아산병원길 22</newAddress><lng>127.11641788083085</lng><lat>37.52536337573928</lat></item><item><id>J981017</id><title>서울 송파구 풍납동 390-1</title><mountain></mountain><localName_1>서울</localName_1><localName_2>송파구</localName_2><localName_3>풍납동</localName_3><mainAddress>390</mainAddress><subAddress>1</subAddress><buildingAddress></buildingAddress><isNewAddress>N</isNewAddress><newAddress></newAddress><lng>127.11726425272366</lng><lat>37.52548148063356</lat></item></channel>

입력하신 주소가 다음의 지도 사이트에서 정상적으로 지도가 보여지는지 또는 로드뷰가 존재하는지 먼저 확인해보셨나요?

확인하는 주소는 http://local.daum.net/map/index.jsp 입니다.
© SIRSOFT
현재 페이지 제일 처음으로