ホームページ >データベース >mysql チュートリアル >緯度と経度を使用して半径内の点を見つけるにはどうすればよいですか?
緯度と経度を考慮した半径内の近接度の決定
フォームでユーザーが経度と緯度を入力できるシナリオを想像してください。同時に、データベースには、地理座標の包括的なリストを格納するテーブルが含まれます。ここでのタスクには、ユーザーの座標から半径 15 マイル以内の点を特定することが含まれます。
解決策:
これを達成するために、距離計算の概念を利用します。特定の式を使用して 2 点間を移動します:
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 中国語 Web サイトの他の関連記事を参照してください。