DB에 약 5000개 가량의 위치 정보가 있습니다.

위도 경도의 두 포인트간 거리 계산하는 코드가 있더군요

하지만 5000개에 대해서 모두 계산할려면 너무 느린거 같구요..

 

반경 2킬로미터 이내를 검색한다 하면

적어도 위도 경도로 숫자 몇(?) 이상 차이나면 계산을 건너뛰는 방식이라던가 그런것을

활용할 수 있을듯 한데요 . 어떤  방법이 있을까요?

 

 

var R = 6371; // km
var dLat = (lat2-lat1).toRad();
var dLon = (lon2-lon1).toRad();
var a = Math.sin(dLat/2) * Math.sin(dLat/2) +
       
Math.cos(lat1.toRad()) * Math.cos(lat2.toRad()) *
       
Math.sin(dLon/2) * Math.sin(dLon/2);
var c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1-a));
var d = R * c;