네이버지도 주소로 좌표변환하여 지도생성하기 정보
네이버지도 주소로 좌표변환하여 지도생성하기본문
이번에 네이버지도가 개편이 되어 주소로 좌표변환해서 지도생성하는 소스입니다.
https://www.ncloud.com/ 에서 회원가입후 등록을 하셔야 합니다.
예전 소스하고 조금 변동이 있어 올려봅니다.
<?
// 주소에 따른 좌표 정보 가져오기
function getNaverGeocode($addr, $cId, $cSecret) {
$addr = urlencode($addr);
$url = "https://naveropenapi.apigw.ntruss.com/map-geocode/v2/geocode?query=".$addr;
$headers = array();
$headers[] ="X-NCP-APIGW-API-KEY-ID: ".$cId;
$headers[] ="X-NCP-APIGW-API-KEY: ".$cSecret;
//$headers[] ="Connection: Close";
$result = getHttp($url, $headers);
return $result;
}
// curl 통신 하기
function getHttp($url, $headers=null)
{
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HEADER, false);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$result = curl_exec($ch);
curl_close($ch);
return $result;
}
$cId = "네이버아이디"; //네이버 클라우드아이디값
$cSecret = "네이버시크릿키"; // 네이버 시크릿키 값
$geo = getNaverGeocode($addr, $cId, $cSecret);
$data = json_decode($geo,1);
$map_x_point = $data['addresses'][0]['x']; //이경우 x 좌표값과 y좌표값이 바뀌어서 출력됨
$map_y_point = $data['addresses'][0]['y'];
$y = $map_x_point;
$x = $map_y_point;
?>
<!-- 지도 api script start -->
<script type="text/javascript" src="https://openapi.map.naver.com/openapi/v3/maps.js?ncpClientId=<?=$cId?>"></script>
<script type="text/javascript">
var map = new naver.maps.Map('map_map', {
center: new naver.maps.LatLng( '<?=$x?>', '<?=$y?>'),
zoom: 13,
//size: new naver.maps.Size(980, 513)
size: new naver.maps.Size(490, 324)
});
var marker = new naver.maps.Marker({
position: new naver.maps.LatLng('<?=$x?>', '<?=$y?>'),
map: map
});
</script>
10
댓글 8개
좋은정보 감사 감사합니다~~^^*
질풍이랑님~ 초보여서 한가지만 문의드려요
엑셀로 입력되어있는 주소 파일을
게시판에서 여분필드에 넣고
어떻게 좌표 생성 하는지 전혀 이해가 안되네요~
저같이 잘 모르는 초보나, 모르는 분들과 함께 적용할려면
어떻게 해야하는지
질풍이랑님과 고수님분들 설명해주실수 있으시면 너무 너무 감사를 드립니다(꾸벅)
감사합니다~~
엑셀에 주소를 여분필드 wr_1 에 넣었다고 하면
$addr = $view['wr_1'] 이랑 같은 개념입니다.
단순이 주소값을 $addr 필드에 넣어서 사용 했을 뿐입니다.
$geo = getNaverGeocode($addr, $cId, $cSecret);
db에 저장된 주소를 좌표로 변환하여 구글지도를 생성하는 방식입니다.
좌표를 생성하는 부분은 함수 getNaverGeocode 호출하여 (주소,네이버아이디,네이버보안키)를 넘겨 주어서 주소에 해당하는 데이타를 가져옵니다.
$geo = getNaverGeocode($addr, $cId, $cSecret);
$result = getHttp($url, $headers); 이부분에서 네이버와 서버통신으로 주소값을 던져주고 주소에 관련된 데이타를 가져오는 부분입니다.
$geo = getNaverGeocode($addr, $cId, $cSecret);
$data = json_decode($geo,1); => 데이터를 사용할 수있게 json_decode로 받아옵니다.
아래는 가지고 온 데이타로 좌표갑
$map_x_point = $data['addresses'][0]['x']; //이경우 x 좌표값과 y좌표값이 바뀌어서 출력됨
$map_y_point = $data['addresses'][0]['y'];
$y = $map_x_point;
$x = $map_y_point;
단순하게 주소는 db에 저장된 필드값을 $addr안에 넣어주면 됩니다.
게시판 뷰페이지라면 $addr = $view['wr_1'] 으로 넣어서 사용 할 수 있습니다.
네이버 아이디랑 보안키만 있으면 기존 소스만 넣어서 사용하면 바로 지도로 변환 가능합니다.
$geo = getNaverGeocode($addr, $cId, $cSecret); 이쪽에서 (주소,네이버아이디,네이버보안키)를 넘겨주면
함수 getNaverGeocode 가 함수 getHttp를 호출하여 naveropenapi.apigw.ntruss.com 서버에 주소값을 보내서 해당 주소에 관련된 데이터를 json형태로 받아옵니다.
그데이터를 $data = json_decode($geo,1); 형식으로 받아서
필요한 좌표값을 구합니다.
$map_x_point = $data['addresses'][0]['x']; //이경우 x 좌표값과 y좌표값이 바뀌어서 출력됨
$map_y_point = $data['addresses'][0]['y'];
$y = $map_x_point;
$x = $map_y_point;
$y 값과 $x 값이 서로 반대로 출력되는게 의아스럽지만 정상적인 방식입니다.
정상적으로 $x $y를 넣었더니 다른 곳으로 지도가 생성되더라구요
잘 연구해서 적용해 보겠습니다
모든 회원님들 건강하세요...
아직 서툴지만 한번 해보겠습니다. 복 많이 받으세요~~
감사합니다~~^^*