2012-05-18 2 views
-1

나는 우편 번호, 위도/경도 데이터, 지역, 도시 등 위치 세부 정보가있는 db 테이블이 있습니다. 이 데이터를 사용하여 웹 응용 프로그램의 사용자 위치를 표시하고 있습니다. 이제 가장 가까운 장소와 같이 거리에 따라 사용자가 검색 한 장소를 정렬하고 싶습니다. 현재 사용자와 그가 검색 한 장소 사이의 거리를 계산 한 다음 거리별로 결과를 정렬하는 방법은 무엇입니까? 당신이 실제로 longitudelatitude 데이터가있는 경우거리 별 검색 결과 정렬

+0

Google에서 거리를 계산하기 위해 [검색] (http://www.zipcodeworld.com/samples/distance.java.html)을 신중하게 선택하는 방법이 있습니다. – Crazenezz

+0

@antyrat :이 멋진 동기 부여 링크에 감사드립니다. :) –

답변

1
i just have this function for calculate distance between two latitude,longitude, pleaes have a look if its helpful to you. 

function distance(lat1, lon1, lat2, lon2, unit) { 
    var radlat1 = Math.PI * lat1/180 
    var radlat2 = Math.PI * lat2/180 
    var radlon1 = Math.PI * lon1/180 
    var radlon2 = Math.PI * lon2/180 
    var theta = lon1-lon2 
    var radtheta = Math.PI * theta/180 
    var dist = Math.sin(radlat1) * Math.sin(radlat2) + Math.cos(radlat1) * Math.cos(radlat2) * Math.cos(radtheta); 
    dist = Math.acos(dist) 
    dist = dist * 180/Math.PI 
    dist = dist * 60 * 1.1515 
    if (unit=="K") { dist = dist * 1.609344 } 
    if (unit=="N") { dist = dist * 0.8684 } 
    return dist 
}  
1

, 당신은 당신의 검색 결과를 정렬하는 것과 계산할 수 있습니다.


데이터 예 :

  • 검색을 수행하는 사용자 갖는다 (위도/경도) : 51.993073, 5.952852
  • 사용자 1 (경도/위도) 52.893073, 5.952852
  • 사용자 2 (위도/경도) : 60.993073, 5.952852

"사용자 1"이 "사용자 2"(위도 참조)보다 검색을 수행하는 사용자에 더 가깝다는 것을 분명히 알 수 있습니다.

참고 : 이것을 계산하려면 수식이 필요합니다. JDev의 답을 확인하십시오.