sitelink1 http://unions5.tistory.com/76 
sitelink2  
sitelink3  

위치정보(GeoLocation) 중 위도(latitude)와 경도(longitude)로 두 지점간 거리(distance) 구하기 

HTML5 , CSS3.0, jQTouch 를 활용하여 아이폰 모바일웹 페이지 제작 중 
GeoLocation 정보가 있어 위치정보를 활용한 주변검색을 만들어보고자 한다.
(예를 들자면 지금 있는 위치에서 반경 10Km 이내에 존재하는 극장 정보)

DB에 해당 위치의 위도와 경도를 가지고 있다면 아래 Function을 통해 쉽게 주변검색을 구현할 수 있다.

오라클 솔루션의 Oracle Spatial 툴 사용하라는 것과 이에 대한 예제가 대부분..
뭐 우리같은 작은 회사에서 지도 서비스를 하는 것이 아닌지라 .. ㅡㅡ

그렇게 몇 시간을 허비하고 계산하는 Function을 다 만들어갈 때쯤 radians.라는 값에 대해 검색하던 중... 아무튼 어렵게 어렵게 찾았다..ㅜㅜ;

나름 검색에 일가견이 있다 생각하고 있었는데, ㅡㅡ; 챙피하게시리.. ㅋㅋ
이걸 찾아다니는 또 다른 사람들이 많을 것이라 생각되어 바로 포스팅한다.

 

 


-----------------------------------------------------------------------------------------
출처 : http://psoug.org/reference/functions.html
-----------------------------------------------------------------------------------------
CREATE OR REPLACE FUNCTION calc_distance(
 pLat1 NUMBER,
 pLon1 NUMBER,
 pLat2 NUMBER,
 pLon2 NUMBER)
 RETURN NUMBER
IS

-- r is the spherical radius of earth in Kilometers 
cSpherRad CONSTANT NUMBER := 6367;
                                                                        -- The spherical radius of earth in miles is 3956
a        NUMBER;
vLat     NUMBER;
vLat1Rad NUMBER;
vLat2Rad NUMBER;
vLon     NUMBER;
vLon1Rad NUMBER;
vLon2Rad NUMBER;

BEGIN
  
/*
  Most computers require the arguments of trigonometric functions to be
  expressed in radians. To convert lon1, lat1 and lon2,lat2 from
  degrees,minutes, seconds to radians, first convert them to decimal
  degrees. To convert decimal degrees to radians, multiply the number
  of degrees by pi/180 = 0.017453293 radians/degrees.
  */


  vLat1Rad := pLat1 * 0.017453293;
  vLat2Rad := pLat2 * 0.017453293;
  vLon1Rad := pLon1 * 0.017453293;
  vLon2Rad := pLon2 * 0.017453293;

  vLon := vLon2Rad - vLon1Rad;
  vLat := vLat2Rad - vLat1Rad;

  a := POWER(SIN(vLat/2),2) + COS(vLat1Rad) * COS(vLat2Rad) *
  POWER(SIN(vLon/2),2);

  
/*
  The intermediate result c is the great circle distance in radians.
  Inverse trigonometric functions return results expressed in radians.
  To express c in decimal degrees, multiply the number of radians by
   180/pi = 57.295780 degrees/radian.
  The great circle distance d will be in the same units as r.
  */


  RETURN ROUND(cSpherRad * 2 * ATAN2(SQRT(a), SQRT(1-a)),1);
EXCEPTION
  WHEN OTHERS THEN
    RETURN 999;
END calc_distance;
/



-----------------------------------------------------------------------------------------

번호 제목 글쓴이 날짜 조회 수
38 Google Map에 현재 위치 주변의 음식점 표시하기 황제낙엽 2017.01.23 8460
37 TTS 이용하기 (구글, 네이버, KT) file 황제낙엽 2018.11.01 1001
36 피들러(Fiddler)를 이용하여 모바일 네트웍 감시 file 황제낙엽 2020.02.24 735
35 팬(Pan), 스와이프(Swipe), 스크롤(Scroll), 플릭(Flick) file 황제낙엽 2017.09.11 630
34 cordova 플러그인을 이용하여 GPS 활성화 황제낙엽 2017.01.14 588
33 음성합성(이하 TTS)관련 사양조사 및 시장조사 file 황제낙엽 2018.11.01 419
32 [Mysql] 위도 경도를 이용해 특정 거리안에 위치(거리) 구하기 황제낙엽 2017.01.25 357
31 Google Maps Geolocation API를 이용한 현재위치 검색 file 황제낙엽 2017.01.14 343
» 위치정보(GeoLocation)에서 위도와 경도로 두 지점간 거리(distance) 구하는 오라클 Function 황제낙엽 2017.01.25 249
29 모바일웹 SMS 황제낙엽 2019.09.28 239
28 원격 데스크톱 환경을 위한 터치에 대한 제스쳐 목록 정의 황제낙엽 2018.06.12 239
27 [jQuery Mobile] List view 황제낙엽 2012.11.15 221
26 Geolocation API를 이용해 위치 정보를 알아내기 file 황제낙엽 2016.12.03 196
25 [JS] navigator geolocation 현재 접속 위치 가져오기 황제낙엽 2016.12.03 179
24 모바일 크롬에서 단축 아이콘 생성 - WebApp 만들기 file 황제낙엽 2016.12.03 165
23 PhoneGap, Accelerator Titanium, Appspresso 황제낙엽 2013.11.29 138
22 [모바일 브라우저] Android 기기 원격 디버깅 시작하기 (PC크롬에서 모바일크롬 디버깅) file 황제낙엽 2019.01.14 125
21 Galaxy Z Fold3 5G Specifications 황제낙엽 2022.03.07 101
20 [Android] / 안드로이드 / googlemap distance / 구글맵 두 위치 사이의 거리 구하기 황제낙엽 2017.01.23 97
19 안드로이드 모바일 브라우저 캐시 지우기 황제낙엽 2019.07.23 90