네이버지도 주소로 좌표변환하여 지도생성하기
이번에 네이버지도가 개편이 되어 주소로 좌표변환해서 지도생성하는 소스입니다.
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>
댓글 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를 넣었더니 다른 곳으로 지도가 생성되더라구요
잘 연구해서 적용해 보겠습니다
모든 회원님들 건강하세요...
아직 서툴지만 한번 해보겠습니다. 복 많이 받으세요~~
감사합니다~~^^*
게시판 목록
그누보드5 팁자료실
| 번호 | 제목 | 글쓴이 | 날짜 | 조회 |
|---|---|---|---|---|
| 2455 |
|
1년 전 | 1118 | |
| 2454 | 1년 전 | 1053 | ||
| 2453 | 1년 전 | 1618 | ||
| 2452 | 1년 전 | 1152 | ||
| 2451 | 1년 전 | 955 | ||
| 2450 | 1년 전 | 1333 | ||
| 2449 | 1년 전 | 881 | ||
| 2448 | 1년 전 | 1331 | ||
| 2447 | 1년 전 | 1410 | ||
| 2446 | 1년 전 | 1125 | ||
| 2445 | 1년 전 | 1281 | ||
| 2444 | 1년 전 | 1674 | ||
| 2443 | 1년 전 | 1483 | ||
| 2442 | 1년 전 | 1070 | ||
| 2441 | 1년 전 | 1176 | ||
| 2440 | 1년 전 | 4619 | ||
| 2439 | 1년 전 | 1075 | ||
| 2438 | 1년 전 | 1115 | ||
| 2437 | 1년 전 | 925 | ||
| 2436 | 1년 전 | 1557 | ||
| 2435 | 1년 전 | 1453 | ||
| 2434 | 1년 전 | 1016 | ||
| 2433 |
|
1년 전 | 613263 | |
| 2432 |
|
1년 전 | 1091 | |
| 2431 |
|
1년 전 | 1705 | |
| 2430 | 1년 전 | 1310 | ||
| 2429 | 1년 전 | 1269 | ||
| 2428 | 1년 전 | 1145 | ||
| 2427 | 1년 전 | 1108 | ||
| 2426 |
뽕엄능브라
|
1년 전 | 1229 |
댓글 작성
댓글을 작성하시려면 로그인이 필요합니다.
로그인하기