출처 :  http://ncube.net/7388

이번에 작업 중인 사이트.. 수시로 정책이 바뀌어서 고생하고 있는.. 사이트에서 반경을 이용한 업체 검색 기능이 필요해서 구글링 좀 하고 잔머리를 좀 굴려서 원하는 기능을 구현했다. 각 지점의 경도와 위도는 네이버 지도API를 이용해 얻어온다. 그런 다음 경도 위도를 DB에 저장하고 Query를 이용해 기준 반경 내 업체를 구하는 식이다.

1. 네이버 지도 API에서 경도, 위도 받아오기
우선 네이버 지도 API를 이용하기 위해서는 Key를 등록해야 한다. http://dev.naver.com/openapi/register 에 접속한다. 로그인이 되어야 정상적으로 이용할 수 있다. 그런 다음 아래 화면처럼 지도키 발급에서 사이트 주소를 입력하고 키를 발급받도록 한다.

그런 다음 경도 위도를 확인하기 위해서 아래 주소로 접속한다. test_key 부분은 위에서 발급 받은 키로 변경한다. 좌표확인URL은 아래와 같다.

더 자세한 사용법은 http://dev.naver.com/openapi/apis/map/javascript_2_0/reference#CT_URL 에서 확인 가능.

아래는 결과 화면이다.

결과는 XML 포맷으로 전달되는 데 x, y 값이 우리가 원하는 값이다. XML 파싱 부분은 검색을 통해서.. ^^;

간단히 내가 사용한 XML Parser는 http://www.criticaldevelopment.net/xml/ 에서 얻을 수 있으며 파서 파일을 PHP 파일에 include 한 후 아래 코드를 이용해 XML에서 좌표를 얻어낸다.

test_key 부분은 위에서 발급받은 키로 변경해야 한다. 그리고 php 파일이 위치한 서버의 도메인과 발급받은 키의 도메인이 일치하지 않으면 실행되지 않는다. www가 붙은 도메인과 붙지 않은 도메인은 서로 다르게 인식되는 듯 하다.

2. MySQL Query를 이용해 기준 반경내 업체 검색
우선 경도 위도를 저장할 필드를 추가해줘야 한다. DATA 타입은 아래와 같이 하면 된다. 필드 명은 적당히 변경.

이제 기준점 (127.0000000, 37.0000000)에서 DB에 저장된 지점의 거리를 계산하는 Query를 작성해보자.

위의 쿼리는 TEST_TABLE에서 기준점에서 반경 5Km 이내의 id를 거리가 가까운 순서로 5개 가져오는 것이다.

참고 : http://code.google.com/intl/ko/apis/maps/articles/phpsqlsearch_v3.html

결과 값이 얻어지면 이제 원하는 기능을 하도록 코드를 작성하면 된다

+ Recent posts