@ socca1157과 같은 쿼리를 사용했지만 쿼리 초기에 3959
이라는 작은 설명을 제공 할 수 있다고 생각했습니다.
대신 마일 km에서 검색하기를 원한다면 내 예제는
$address = urlencode($_GET['user-address']);
$earth_radius = 3959;
$search_radius = 100;
$ch = curl_init('https://maps.google.com/maps/api/geocode/json?address='.$address.'&sensor=false');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$geocode = curl_exec($ch);
curl_close($ch);
$output = json_decode($geocode);
$lat = $output->results[0]->geometry->location->lat;
$lng = $output->results[0]->geometry->location->lng;
$sql = "SELECT *, ($earth_radius * acos(cos(radians($lat)) * cos(radians(latitude)) * cos(radians(longitude) - radians($lng)) + sin(radians($lat)) * sin(radians(latitude)))) AS distance FROM table WHERE isActive = 1 HAVING distance < $search_radius ORDER BY distance LIMIT 5";
$result = mysql_query($sql);
때문에 사용자의 주소의 위도와 LNG를 얻을 수
, 예를 들어, 당신은 km에서 지구 반경을 사용하는 것을 , 6,371km입니다.
매우 유용한 설명 http://de.scribd.com/doc/2569355/Geo-Distance-Search-with-MySQL –
중복 된 http://stackoverflow.com/questions/1896213/determine-if- 원 포인트 좌표가 다른 것 –