집 >데이터 베이스 >MySQL 튜토리얼 >위도와 경도를 사용하여 반경 내의 점을 찾는 방법은 무엇입니까?
위도와 경도를 고려하여 반경 내 근접성 결정
사용자가 경도와 위도를 입력할 수 있는 양식이 있는 시나리오를 상상해 보세요. 동시에 데이터베이스에는 포괄적인 지리 좌표 목록이 포함된 테이블이 포함되어 있습니다. 현재 작업에는 사용자 좌표로부터 반경 15마일 내의 모든 지점을 식별하는 것이 포함됩니다.
해결책:
이를 달성하기 위해 거리 계산 개념을 활용합니다. 특정 공식을 사용하여 두 지점 사이:
function get_distance($latitude1, $longitude1, $latitude2, $longitude2, $unit = 'Mi') { $theta = $longitude1 - $longitude2; $distance = (sin(deg2rad($latitude1)) * sin(deg2rad($latitude2))) + (cos(deg2rad($latitude1)) * cos(deg2rad($latitude2)) * cos(deg2rad($theta))); $distance = acos($distance); $distance = rad2deg($distance); $distance = $distance * 60 * 1.1515; switch($unit) { case 'Mi': break; case 'Km' : $distance = $distance * 1.609344; } return (round($distance,2)); }
또는 데이터베이스 쿼리를 활용할 수 있습니다:
$query = "SELECT *,(((acos(sin((".$latitude."*pi()/180)) * sin((`Latitude`*pi()/180))+cos((".$latitude."*pi()/180)) * cos((`Latitude`*pi()/180)) * cos(((".$longitude."- `Longitude`)* pi()/180))))*180/pi())*60*1.1515 ) as distance FROM `MyTable` HAVING distance >= ".$distance.";
위 내용은 위도와 경도를 사용하여 반경 내의 점을 찾는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!