나는 열 latitude
및 longitude
와 users
라는 데이터베이스를 가지고 있고, 나는 특정 위도와 경도에 50km 반경 내에있는 가장 가까운 사용자합니다 (users
테이블에 사용자를) 해결하려면 $_POST
에서 제공됩니다.일 MySQL의
내가 어떻게 할 수 있는지 말해 줄 수 있습니까? latitude_compare()
또는 뭔가 같은 MySQL의 함수 또는 사용해야하는 특정 수학 함수가 있습니까?
나는 열 latitude
및 longitude
와 users
라는 데이터베이스를 가지고 있고, 나는 특정 위도와 경도에 50km 반경 내에있는 가장 가까운 사용자합니다 (users
테이블에 사용자를) 해결하려면 $_POST
에서 제공됩니다.일 MySQL의
내가 어떻게 할 수 있는지 말해 줄 수 있습니까? latitude_compare()
또는 뭔가 같은 MySQL의 함수 또는 사용해야하는 특정 수학 함수가 있습니까?
당신이 뭔가를 할 수 있습니다
SELECT *,
(ACOS((SIN(RADIANS(ref_latitude))*SIN(RADIANS(latitude))) +
(COS(RADIANS(ref_latitude))*COS(RADIANS(latitude))*COS(RADIANS(longitude)
-RADIANS(ref_longitude)))) * 6371) AS distance
FROM table
ORDER BY distance ASC
포인트 A : ref_latitude ref_longitude
포인트 B : 위도
내 위도/경도 값이도에 경도, 같은 이 하나 :
드레스덴 : 13.721067614 881400/51.060033646337900
여기는 내가 사용 해본 코드입니다. 주어진 반지름 내에서 모든 lat와 lng를 선택합니다.
$q = "SELECT * (3959 * acos(cos(radians($current_lat)) * cos(radians(lat)) * cos(radians(lng) - radians($current_lng)) + sin(radians($current_lat)) * sin(radians(lat)))) AS distance FROM users HAVING distance < $radius";
[근접 검색] (http://stackoverflow.com/questions/260335/proximity-search) 중복 가능 –